View Issue Details

IDProjectCategoryView StatusLast Update
0001569T99X171.00 SKB EagleSW Issuepublic2025-07-04 16:55
Reporter(ALTech) Younkwang Jung Assigned To(SW) Willin Deng Due Date2024-09-04 17:48
PrioritynormalSeveritys4-minorReproducibilityhave not tried
Status closedResolutionfixed 
Summary0001569: [Smart3][ATV10][VoC] RCU OK button not working
DescriptionHi Kerwin

An issue with the RCU OK button not working was observed in the VoC. (VoC increased)
https://jira.skbroadband.com/browse/BFXBTF-484

While reviewing the VoC logs, please review the log attached here first.

The OK button was pressed in the dmesg, but the keycode is missing in the main.log.
Please check it urgently.

Thank you
YK.Jung
TagsNo tags attached.
Attach Tags

Users monitoring this issue

Activities

(ALTech) Younkwang Jung

2022-11-29 19:00

developer  

rcu_ok_missing.PNG (87,165 bytes)   
rcu_ok_missing.PNG (87,165 bytes)   

(ALTech) Younkwang Jung

2022-11-30 09:03

developer   ~0011336

Hi Kerwin

Please review the attached log file.
KEYCODE_DPAD_CENTER is observed in dmesg, but it is not observed in main.log
Please check it urgently.

Thank you
YK.Jung

(SW) Kerwin Chen

2022-11-30 10:58

developer   ~0011341

Hi YK,

I see there are some messages from Google Assistant.
It looks like key events are not sent to frameworks while GA is running.
However, I don't understand why it says "mic open error".
Please check log below

11-25 11:54:14.783 4289 4311 I AtvRemote.VoiceOverBle: Ongoing audio session cannot be interrupted
11-25 11:54:14.784 4289 4311 W AtvRemote.VoiceOverBle: Received mic open error without pending session: F01
....
11-25 11:54:42.087 4289 4311 I AtvRemote.VoiceOverBle: Ongoing audio session cannot be interrupted
11-25 11:54:42.087 4289 4311 W AtvRemote.VoiceOverBle: Received mic open error without pending session: F01

(ALTech) Younkwang Jung

2022-11-30 11:20

developer   ~0011343

Hi Kerwin

First of all, I will report to SKB that the analysis is in progress.
Please update it as soon as it is analyzed.

Thank you!!

(ALTech) Younkwang Jung

2022-11-30 14:50

developer   ~0011350

HI Kerwin

The today VoC meeting with SKB was over and we need an update on this issue within today.
Please check it

Thank you!!
YK.Jung

(SW) Kerwin Chen

2022-11-30 17:40

developer   ~0011353

Last edited: 2022-11-30 17:44

Hi YK,

For 2nd log files, we don't find useful information.
We don't change RCU related function for a long time.
What is changed recently on Smart3 ?

1. In dmesg.txt, you can see many "key down" events.
But "main.log.1" started at '11-25 17:43:40', you can ignore "key down" events in dmesg.txt before '11-25 17:43:40'.

2. We see POWER key at '17:47:03'.
From main.log.1, STB was going to sleep mode.
So e can also ignore 'key down' events till '17:49:22'.
However, I have no idea why user still use RCU to operate STB.
===========================================================================================
[Fri Nov 25 17:47:03 2022] key down 116
11-25 17:47:03.970 13469 13709 I BtvKeyEvent[6]-2022.06.23: checkBtvKeyCode outKeyCode : 26, name : 26
...
11-25 17:47:04.126 13469 15360 I STBAPIManager: sleep() called
...
===========================================================================================

3. After STB waked up, there were several key events.
But I don't find useful information from main.log file.
=================================================================================
[Fri Nov 25 17:49:22 2022] key down 116
11-25 17:49:22.620 13469 13710 I BtvKeyEvent[6]-2022.06.23: checkBtvKeyCode outKeyCode : 26, name : 26
..
11-25 17:49:22.640 13469 13469 I STBAPIManager: wakeup() called
..

[Fri Nov 25 17:49:30 2022] key down 232
[Fri Nov 25 17:49:32 2022] key down 232
[Fri Nov 25 17:49:32 2022] key down 232
[Fri Nov 25 17:49:32 2022] key down 232
===> no corresponding events in main.log

[Fri Nov 25 17:49:32 2022] key down 106
11-25 17:49:33.219 3839 3933 I WindowManager: interceptKeyTi keyCode=22 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=43 mSource=1793 mScanCode=106 mCharacters=null

[Fri Nov 25 17:49:33 2022] key down 232
===> no corresponding event in main.log

[Fri Nov 25 17:52:02 2022] key down 172
11-25 17:52:02.852 3839 3933 I WindowManager: interceptKeyTi keyCode=3 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=43 mSource=1793 mScanCode=172 mCharacters=null
[Fri Nov 25 17:52:02 2022] key down 304
11-25 17:52:02.999 3839 3933 I WindowManager: interceptKeyTi keyCode=397 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=43 mSource=1793 mScanCode=304 mCharacters=null
===========================================================================================

(ALTech) Younkwang Jung

2022-11-30 18:34

developer   ~0011354

HI Kerwin

INTEK is also observing this issue, however, the FXN model is occurring more than 12 times compared to INTEK.
so SKB suspects that there is a difference in handling RCU key.

And it seems to be observed from v15.534.28 version. (BFX-AT100_5.3.4a_2022-0818-165127.xml)
(this version has been deployed in the field.)

I have two questions
1) there is an ok button log in kernel (dmesg).
   Is there a possibility that this is an RCU HW issue?

2) Is it possible to check whether the key event was delivered to the Android system after receiving the OK button?
   We need to find out where it disappeared.

There are several more logs in JIRA, so please check them. (20221125_BFX-AT100_Log (2).zip)

I will let you know if there is any additional information.

Thank you!!
20221125_BFX-AT100_Log (2).zip (21,757,420 bytes)

(ALTech) Younkwang Jung

2022-12-01 08:27

developer   ~0011357

HI Kerwin

There is a VoC meeting at 5pm(KoreaTime) today.
At that time, I need to report the progress on this issue again.
please review the addition of logs to determine the cause and improvement for this issue.

Please update the progress by 4 pm(KT) again.

Thank you!!

(SW) Kerwin Chen

2022-12-01 14:04

developer   ~0011360

Last edited: 2022-12-01 14:05

Hi YK,

Please check analysis result so far:
1. 0130000013_20221129_4C_D5_77_FE_8B_B7 => no "key down 232" im dmesg.txt, suppose BT RCU is disconnected
2. 0130000013_20221129_38_D5_7A_DA_35_E5 => key matches, DPAD_CENTER is found in log.
=================== 38_D5_7A_DA_35_E5 logs ============================================
[Fri Nov 25 09:13:34 2022] key down 106
11-25 09:13:35.503 3870 4007 I WindowManager: interceptKeyTi keyCode=22 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=366 mSource=1793 mScanCode=106 mCharacters=null

[Fri Nov 25 09:13:35 2022] key down 106
11-25 09:13:35.997 3870 4007 I WindowManager: interceptKeyTi keyCode=22 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=366 mSource=1793 mScanCode=106 mCharacters=null

[Fri Nov 25 09:13:35 2022] key down 232
11-25 09:13:40.588 3870 4007 I WindowManager: interceptKeyTi keyCode=23 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=2 mSource=1793 mScanCode=232 mCharacters=null

[Fri Nov 25 09:13:37 2022] key down 232
11-25 09:14:49.830 3870 4007 I WindowManager: interceptKeyTi keyCode=23 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=2 mSource=1793 mScanCode=232 mCharacters=null
======================================================================

3. For "0130000101_20221129_4C_D5_77_FE_8B_B7" and "0130000101_20221129_4C_D5_77_FF_CB_83", there are mismatched key between kernel and logcat files.
I don't have any idea about root cause so far.

(ALTech) Younkwang Jung

2022-12-01 17:35

developer   ~0011361

HI Kerwin

Today's VoC meeting is over.
Please proceed with the analysis as much as possible and review how to solve it if there are no results.

Thank you
YK.Jung

(ALTech) Younkwang Jung

2022-12-02 10:50

developer   ~0011366

Hi Kerwin

I need to update the status one more time by today.
Please update the contents by 4 PM (KT)

Thank you
YK.Jung

(SW) Kerwin Chen

2022-12-02 14:33

developer   ~0011368

Hi YK,

We don't find useful information in log files.
Please help to get more information from field users, such as when the issue start/end, Does it happen on a specific UI ?
I think it will help to reproduce the issue.

BTW, we can enable debug message in Android framework.
But I don't know how can you update user's FW to get logs.

in frameworks/native/libs/input/KeyLayoutMap.cpp, there are "DEBUG_PARSER", "DEBUG_MAPPING" flags.

(ALTech) Younkwang Jung

2022-12-02 15:13

developer   ~0011372

Last edited: 2022-12-02 15:20

View 2 revisions

Hi Kerwin

I have two questions

1) you reviewed it with the code, but you couldn't find the cause. is it correct ?
2) Is it possible to debug this issue enough if fxn enable the debug flags?

Thank you!!

(ALTech) Younkwang Jung

2022-12-05 08:33

developer   ~0011377

Hi Kerwin

I requested more information to SKB
and please answer 2 questions.

we may need to prepare FW for temporary deployment.

Thank you!!

(ALTech) Younkwang Jung

2022-12-05 09:03

developer   ~0011384

Hi Kerwin

Please analyze the log attached here.
SKB manager is said to have an issue on the weekend.
I will let you know more details after checking.

Thank you!!

(SW) Kerwin Chen

2022-12-05 09:50

developer   ~0011387

Hi YK,

Please check answers below:
1) you reviewed it with the code, but you couldn't find the cause. is it correct ?
 => FXN add kernel driver for BT key handling.
  From log files, the driver report key code to Android Framework correctly.
  It is possible key event is missing in Android Framework due to some reasons.
  But we don't see useful information in log files.

2) Is it possible to debug this issue enough if fxn enable the debug flags?
  => The flag will print key code mapping in Android Framework.
But we can't make sure it is enough for this issue.

Is it possible to ask user to check "OK" button in other Google application, such as YouTube, Google Settings ?
We need to know if this is a system or app related issue.

Thank you !

(ALTech) Younkwang Jung

2022-12-05 10:19

developer   ~0011388

Hi Kerwin

"From log files, the driver report key code to Android Framework correctly."
=> Please let me know the contents of this log.

The reproduction method in SKB manager was as follows.
Only one time has been reproduced.
1) Playing VOD for a long time
2) press Home
3) then the direction key works while the Home menu is displayed, but the OK button does not work.

the QA team is reproducing the same step.

Thank you!!

(SW) Kerwin Chen

2022-12-05 10:30

developer   ~0011389

Hi YK,

Kernel driver pass scan code '232' to framework and then framework maps it to 'DPAD_CENTER' in key layout files.
From dmesg.txt, kernel driver did report '232' to framework correctly.

Below is how kernel driver report scan code to system.
==================================================
static void key_down (...) {
...
    if (DBG) printk(KERN_WARNING "key down %d\n", key);
    input_report_key(dev->input_handle, key, 1);
    input_sync(dev->input_handle);
...
}

(ALTech) Younkwang Jung

2022-12-08 13:06

developer   ~0011431

Hi Kerwin

This is a different issue during the test
I checked the log because the RCU button didn't work for a while.

A parity check error code was observed for a while after "atvr_remove: hdev->name = BRM_BA02_003 removed, num 1->0"
Please review this log as well.
=============================================================================
...
[Thu Dec 8 13:55:18 2022] v4lvideo: provider name: vdec.h264.00
[Thu Dec 8 13:55:18 2022] v4lvideo:[0]di release1 get=395687, put=395107, release=576
[Thu Dec 8 13:55:18 2022] release: alloc=688, release=680
[Thu Dec 8 13:55:18 2022] binder: 3524:3780 transaction failed 29201/-1, size 32-0 line 3149
[Thu Dec 8 13:55:18 2022] type=1400 audit(1670475319.116:84296): avc: denied { read } for comm="btvservice@1.0-" name="fczlasttime" dev="tmpfs" ino=40195 scontext=u:r:btvservice_hal:s0 tcontext=u:object_r:tmpfs:s0 tclass=file permissive=0
[Thu Dec 8 13:55:18 2022] type=1400 audit(1670475319.452:84297): avc: denied { call } for comm="ATVRemoteAudioH" scontext=u:r:hal_audio_amlogic:s0 tcontext=u:r:rc_server:s0 tclass=binder permissive=0
[Thu Dec 8 13:55:19 2022] atvr_remove: hdev->name = BRM_BA02_003 removed, num 1->0
[Thu Dec 8 13:55:19 2022] binder: 3524:3780 transaction failed 29201/-1, size 32-0 line 3149
[Thu Dec 8 13:55:19 2022] type=1400 audit(1670475319.880:84298): avc: denied { call } for comm="ATVRemoteAudioH" scontext=u:r:hal_audio_amlogic:s0 tcontext=u:r:rc_server:s0 tclass=binder permissive=0
[Thu Dec 8 13:55:19 2022] type=1400 audit(1670475320.084:84299): avc: denied { read } for comm="btvservice@1.0-" name="u:object_r:default_prop:s0" dev="tmpfs" ino=10790 scontext=u:r:btvservice_hal:s0 tcontext=u:object_r:default_prop:s0 tclass=file permissive=0
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: invalid custom:0xff
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: cur_custom is nulll
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: no valid key to handle
[Thu Dec 8 13:55:25 2022] meson-remote: parity check error code=0xcf
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: invalid custom:0x0
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: cur_custom is nulll
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: no valid key to handle
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: invalid custom:0xff
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: cur_custom is nulll
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: no valid key to handle
[Thu Dec 8 13:55:25 2022] meson-remote: parity check error code=0x33f
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: invalid custom:0x0
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: cur_custom is nulll
[Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: no valid key to handle
[Thu Dec 8 13:55:26 2022] meson-remote ff808040.rc: invalid custom:0xff
[Thu Dec 8 13:55:26 2022] meson-remote ff808040.rc: cur_custom is nulll
....
=================================================================

Thank you
YK.Jung
kernel.log (11,680,425 bytes)

(ALTech) Younkwang Jung

2022-12-08 13:12

developer   ~0011432

Hi Kerwin

Please ignore the above log first.
There seems to have been a little problem with the test environment.
I will let you know after checking again.

Thank you
YK.Jung

(ALTech) Younkwang Jung

2022-12-12 09:44

developer   ~0011455

Hi Kerwin

Please give us your(FXN) opinion on what we should do to solve this issue now.
It is not currently being reproduced at here, but it is happening in the field.
Please discuss it by tomorrow morning and let me know.

Thank you
YK.Jung

(SW) Kerwin Chen

2022-12-12 11:01

developer   ~0011463

Hi YK,

Do you get more information from field users?
such as post in https://172.18.223.170/vaas/view.php?id=1569#c11387
It is hard to have solution based on log files only.
Thank you !

(ALTech) Younkwang Jung

2022-12-12 11:47

developer   ~0011465

Hi Kerwin

This issue is not being reported in INTEK Smart3.

it can be reproduced in the field, but if we do the same reproduction test at here, the issue can't be reproduced
And there is no more information on the field. it is assumed to be random.
and did you(FXN QA) do a reproduction test?

anyway we need to find the cause in the log.

And If you can't find it in the log, you have to add additional logs and proceed with the official distribution.
Can you add the log and distribute it? , is it correct ?
Then please commit it

Thank you!!

(SW) Kerwin Chen

2022-12-12 15:26

developer   ~0011467

Hi YK,

We will add debug messages in path of key dispatching.
When do you need the test FW containing debug messages ?

(ALTech) Younkwang Jung

2022-12-13 12:17

developer   ~0011472

Hi Kerwin

I have one more question.
How about #define DEBUG_RAW_EVENTS 1 and release it in InputReader.cpp file?
frameworks/native/services/inputflinger/InputReader.cpp
Please give me your opinion.

and please send me the test FW(ND/SD) when it is ready

Thank you!!

(SW) Bcan Yeh

2022-12-14 10:43

developer   ~0011477

Last edited: 2022-12-14 10:49

Hi YK,

Here is the download link of test images.
https://drive.google.com/drive/folders/1vDe6_PrZ6mb87ml9JPGpigZyL_VUhNzO?usp=share_link

The flag DEBUG_RAW_EVENTS of InputReader.cpp is also enabled.

ps. This test FW is modified over the version of BFX-AT100_5.3.4a_2022-0818-165127.xml.

(ALTech) Younkwang Jung

2022-12-14 15:49

developer   ~0011486

HI Kerwin / Bcan

I checked the FW and have additional question.
Can you put a specific code to confirm that the user's key has disappeared?

For example, when the key disappears,
BFXBTF-484 traceKey 1
BFXBTF-484 traceKey 2
..
displays the log.
(Allocate a number from 1 according to the location of the code. )

If, after implementation and deploying the FW, I can register BFXBTF-484 with the log system, then I can gather "BFXBTF-484 traceKey xxx" information from the user.
Can you do it like this?

When only logs are added, it is necessary to wait for VoC from the user.

Please give me your opinion.

Thank you
YK.Jung

(SW) Bcan Yeh

2022-12-15 17:03

developer   ~0011496

Hi YK,

Test images (suffix: lostkey8) are uploaded to the same download link.
https://drive.google.com/drive/folders/1vDe6_PrZ6mb87ml9JPGpigZyL_VUhNzO?usp=share_link

The related tags are replaced with "BFXBTF-484".

(ALTech) Younkwang Jung

2022-12-16 13:19

developer   ~0011499

HI Bcan

you seem to have misunderstood something.
My requirement is that the BFXBTF-484 log is printed only when the issue occurs.
(i.e., if BFXBTF-484 is observed in the log, the issue is considered to have occurred. )

< If the BFXBTF-484 log is continuously observed as shown below, it is impossible to check whether it is an issue or not. >
..
12-16 14:09:53.916 3899 4009 I BFXBTF-484: ===> traceKey 7, keycode=166, in dispatchOnceInnerLocked of frameworks/native/services/inputflinger/InputDispatcher.cpp line 411
12-16 14:09:53.916 3899 4009 I BFXBTF-484: ===> traceKey 6.2, keycode=166, interceptKeyResult=0, in dispatchKeyLocked of frameworks/native/services/inputflinger/InputDispatcher.cpp line 804
12-16 14:09:53.916 3899 4009 I BFXBTF-484: ===> traceKey 6, keycode=166, interceptKeyResult=0, in dispatchKeyLocked of frameworks/native/services/inputflinger/InputDispatcher.cpp line 855
12-16 14:09:53.916 3899 4009 I BFXBTF-484: ===> traceKey 5, keycode=166, interceptKeyResult=0, in dispatchKeyLocked of frameworks/native/services/inputflinger/InputDispatcher.cpp line 859
12-16 14:09:53.916 3899 4009 I BFXBTF-484: ===> traceKey 4, keycode=166 in doInterceptKeyBeforeDispatchingLockedInterruptible of frameworks/native/services/inputflinger/InputDispatcher.cpp line 4178
..

If you don't understand, please contact me

Thank you
YK.Jung

(SW) Bcan Yeh

2022-12-16 16:16

developer   ~0011501

Hi YK,

    We have no idea about how this issue happens.
    There are not proper positions to add messages as what you said.

    The only way we can use is to print all messages along with the programmatic path of a key press
    and check the break point of the messages while the issue happens.

(ALTech) Younkwang Jung

2022-12-16 18:01

developer   ~0011502

Hi Bcan

Please check the keycode flow on the source code and add the BFXBTF-484 log where it is rejected in the middle or where exception processing occurs

for example > below is an example. actually, I didn't check the keycode flow.
Note : what I'm saying below is just an example. you can check and put all the codes in case of an abnormal error.

========================= example===========================================
 145 static bool validateKeyEvent(int32_t action) {
 146 if (! isValidKeyAction(action)) {
 147 ALOGE("Key event has invalid action code 0x%x", action); <== add log BFXBTF-484
 148 return false;
 149 }
 150 return true;
 151 }


 576 void InputDispatcher::dropInboundEventLocked(EventEntry* entry, DropReason dropReason) {
 577 const char* reason;
                                                                         <== add log BFXBTF-484 with dropReason
 578 switch (dropReason) {
 579 case DROP_REASON_POLICY:
 580 #if DEBUG_INBOUND_EVENT_DETAILS
 581 ALOGD("Dropped event because policy consumed it.");
 582 #endif
 583 reason = "inbound event was dropped because the policy consumed it";
 584 break;
 585 case DROP_REASON_DISABLED:
 586 if (mLastDropReason != DROP_REASON_DISABLED) {
 587 ALOGI("Dropped event because input dispatch is disabled.");
 588 }
 589 reason = "inbound event was dropped because input dispatch is disabled";
 590 break;


 52 status_t KeyLayoutMap::load(const std::string& filename, sp<KeyLayoutMap>* outMap) {
 53 outMap->clear();
 54
 55 Tokenizer* tokenizer;
 56 status_t status = Tokenizer::open(String8(filename.c_str()), &tokenizer);
 57 if (status) {
 58 ALOGE("Error %d opening key layout map file %s.", status, filename.c_str()); <== add log BFXBTF-484
 59 } else {
 60 sp<KeyLayoutMap> map = new KeyLayoutMap();
 61 if (!map.get()) {
 62 ALOGE("Error allocating key layout map."); <== add log BFXBTF-484
 63 status = NO_MEMORY;
 64 } else {
 65 #if DEBUG_PARSER_PERFORMANCE
 66 nsecs_t startTime = systemTime(SYSTEM_TIME_MONOTONIC);
 67 #endif

242 status_t KeyLayoutMap::Parser::parseKey() {
243 String8 codeToken = mTokenizer->nextToken(WHITESPACE);
244 bool mapUsage = false;
245 if (codeToken == "usage") {
246 mapUsage = true;
247 mTokenizer->skipDelimiters(WHITESPACE);
248 codeToken = mTokenizer->nextToken(WHITESPACE);
249 }
250
251 char* end;
252 int32_t code = int32_t(strtol(codeToken.string(), &end, 0));
253 if (*end) {
254 ALOGE("%s: Expected key %s number, got '%s'.", mTokenizer->getLocation().string(),
255 mapUsage ? "usage" : "scan code", codeToken.string()); <== add log BFXBTF-484
256 return BAD_VALUE;
257 }
258 KeyedVector<int32_t, Key>& map = mapUsage ? mMap->mKeysByUsageCode : mMap->mKeysByScanCode;
259 if (map.indexOfKey(code) >= 0) {
260 ALOGE("%s: Duplicate entry for key %s '%s'.", mTokenizer->getLocation().string(),
261 mapUsage ? "usage" : "scan code", codeToken.string()); <== add log BFXBTF-484
262 return BAD_VALUE;
263 }
....
==========================================================================================

And the key code can be checked by "in/out" each module.
There is no need to display debugs if they are normally "input/output" to each module.
but if there is an "input" but no "output", you can display the log by checking that it remains at the next "input".

Please check it
Thank you!!
YK.Jung

(SW) Bcan Yeh

2022-12-23 14:13

developer   ~0011560

Hi YK,

Attached files are the modifications of debug log.
It includes
1. Add logs at "return" points. (use tag BFXBTF-484)
    At first there 8 points added. After experiments, only 2 points are kept and 6 points are removed because they will print logs through normal operations.
2. Add logs along with programmatic path of a key press (use the original tag of each file)
    This includes the 6 points removed from item 1.
3. Enable related debug flags

I will provide test images if you think these modifications are okay.
traceKey1.diff (4,705 bytes)   
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 75b9705e104..722a10ee1ce 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -1836,6 +1836,7 @@ public class InputManagerService extends IInputManager.Stub
 
     // Native callback.
     private long interceptKeyBeforeDispatching(IBinder focus, KeyEvent event, int policyFlags) {
+        Slog.w(TAG, "===> traceKey A3, keycode="+event.getKeyCode()+" in interceptKeyBeforeDispatching of InputManagerService.java");
         return mWindowManagerCallbacks.interceptKeyBeforeDispatching(focus, event, policyFlags);
     }
 
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index c01ab4227d2..a72c6a0f7ee 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -3173,6 +3173,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
 	
     @Override
     public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {
+	Log.d(TAG, "====> traceKey A1, keycode="+event.getKeyCode()+" in interceptKeyBeforeDispatching of PhoneWindowManager.java");
         final long result = interceptKeyBeforeDispatchingInner(win, event, policyFlags);
         final int eventDisplayId = event.getDisplayId();
         if (result == 0 && !mPerDisplayFocusEnabled
@@ -3214,6 +3215,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
         final int displayId = event.getDisplayId();
 		
 
+	Log.d(TAG, "====> traceKey A0, keycode="+keyCode+" in interceptKeyBeforeDispatchingInner of PhoneWindowManager.java");
 
         if (DEBUG_INPUT) {
             Log.i(TAG, "interceptKeyTi keyCode=" + keyCode + " down=" + down + " repeatCount="
@@ -3895,6 +3897,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
         int actions = interceptKeyBeforeQueueing(fallbackEvent, policyFlags);
 			
         if ((actions & ACTION_PASS_TO_USER) != 0) {
+
             long delayMillis = interceptKeyBeforeDispatching(
                     win, fallbackEvent, policyFlags);
             if (delayMillis == 0) {
@@ -4375,6 +4378,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                                                 isKeyguardShowingAndNotOccluded() :
                                                 mKeyguardDelegate.isShowing()));
 
+	Log.d(TAG, "====> traceKey B0, keycode="+keyCode+" in interceptKeyBeforeQueueing of PhoneWindowManager.java");
         if (DEBUG_INPUT) {
             Log.d(TAG, "interceptKeyTq keycode=" + keyCode
                     + " interactive=" + interactive + " keyguardActive=" + keyguardActive
diff --git a/services/core/java/com/android/server/wm/InputManagerCallback.java b/services/core/java/com/android/server/wm/InputManagerCallback.java
index 6b500967f42..ecdf90f0fbe 100644
--- a/services/core/java/com/android/server/wm/InputManagerCallback.java
+++ b/services/core/java/com/android/server/wm/InputManagerCallback.java
@@ -180,6 +180,7 @@ final class InputManagerCallback implements InputManagerService.WindowManagerCal
     public long interceptKeyBeforeDispatching(
             IBinder focus, KeyEvent event, int policyFlags) {
         WindowState windowState = mService.windowForClientLocked(null, focus, false);
+        Slog.i(TAG_WM, "===> traceKey A2, keycode="+event.getKeyCode()+" in interceptKeyBeforeDispatching of InputManagerCallback.java");
         return mService.mPolicy.interceptKeyBeforeDispatching(windowState, event, policyFlags);
     }
 
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index fb3076ba9dd..ab66f40b205 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -1148,6 +1148,7 @@ nsecs_t NativeInputManager::interceptKeyBeforeDispatching(
 
         jobject keyEventObj = android_view_KeyEvent_fromNative(env, keyEvent);
         if (keyEventObj) {
+            ALOGI("===> traceKey A4, keyCode=%d in %s of %s line %d", keyEvent->getKeyCode(), __func__, __FILE__,__LINE__);
             jlong delayMillis = env->CallLongMethod(mServiceObj,
                     gServiceClassInfo.interceptKeyBeforeDispatching,
                     tokenObj, keyEventObj, policyFlags);
traceKey1.diff (4,705 bytes)   
traceKey2.diff (12,392 bytes)   
diff --git a/libs/input/KeyCharacterMap.cpp b/libs/input/KeyCharacterMap.cpp
index e189d20e2..1694ab601 100644
--- a/libs/input/KeyCharacterMap.cpp
+++ b/libs/input/KeyCharacterMap.cpp
@@ -34,14 +34,13 @@
 #include <utils/Timers.h>
 
 // Enables debug output for the parser.
-#define DEBUG_PARSER 0
+#define DEBUG_PARSER 1
 
 // Enables debug output for parser performance.
-#define DEBUG_PARSER_PERFORMANCE 0
+#define DEBUG_PARSER_PERFORMANCE 1
 
 // Enables debug output for mapping.
-#define DEBUG_MAPPING 0
-
+#define DEBUG_MAPPING 1
 
 namespace android {
 
diff --git a/libs/input/KeyLayoutMap.cpp b/libs/input/KeyLayoutMap.cpp
index efca68d17..a84d57c56 100644
--- a/libs/input/KeyLayoutMap.cpp
+++ b/libs/input/KeyLayoutMap.cpp
@@ -28,13 +28,13 @@
 #include <utils/Timers.h>
 
 // Enables debug output for the parser.
-#define DEBUG_PARSER 0
+#define DEBUG_PARSER 1
 
 // Enables debug output for parser performance.
-#define DEBUG_PARSER_PERFORMANCE 0
+#define DEBUG_PARSER_PERFORMANCE 1
 
 // Enables debug output for mapping.
-#define DEBUG_MAPPING 0
+#define DEBUG_MAPPING 1
 
 
 namespace android {
diff --git a/services/inputflinger/InputDispatcher.cpp b/services/inputflinger/InputDispatcher.cpp
index aea026823..73ee35d17 100644
--- a/services/inputflinger/InputDispatcher.cpp
+++ b/services/inputflinger/InputDispatcher.cpp
@@ -20,28 +20,28 @@
 #define LOG_NDEBUG 0
 
 // Log detailed debug messages about each inbound event notification to the dispatcher.
-#define DEBUG_INBOUND_EVENT_DETAILS 0
+#define DEBUG_INBOUND_EVENT_DETAILS 1
 
 // Log detailed debug messages about each outbound event processed by the dispatcher.
-#define DEBUG_OUTBOUND_EVENT_DETAILS 0
+#define DEBUG_OUTBOUND_EVENT_DETAILS 1
 
 // Log debug messages about the dispatch cycle.
-#define DEBUG_DISPATCH_CYCLE 0
+#define DEBUG_DISPATCH_CYCLE 1
 
 // Log debug messages about registrations.
-#define DEBUG_REGISTRATION 0
+#define DEBUG_REGISTRATION 1
 
 // Log debug messages about input event injection.
-#define DEBUG_INJECTION 0
+#define DEBUG_INJECTION 1
 
 // Log debug messages about input focus tracking.
-#define DEBUG_FOCUS 0
+#define DEBUG_FOCUS 1
 
 // Log debug messages about the app switch latency optimization.
-#define DEBUG_APP_SWITCH 0
+#define DEBUG_APP_SWITCH 1
 
 // Log debug messages about hover events.
-#define DEBUG_HOVER 0
+#define DEBUG_HOVER 1
 
 #include "InputDispatcher.h"
 
@@ -65,6 +65,8 @@
 #define INDENT3 "      "
 #define INDENT4 "        "
 
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
 using android::base::StringPrintf;
 
 namespace android {
@@ -290,6 +292,7 @@ void InputDispatcher::dispatchOnce() {
 void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
     nsecs_t currentTime = now();
 
+    ALOGI("===> traceKey A10, mDispatchEnabled=%d, mDispatchFrozen=%d in %s of %s line %d" ,mDispatchEnabled ,mDispatchFrozen ,__func__ ,__FILE__ ,__LINE__);
     // Reset the key repeat timer whenever normal dispatch is suspended while the
     // device is in a non-interactive state.  This is to ensure that we abort a key
     // repeat if the device is just coming out of sleep.
@@ -302,6 +305,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
 #if DEBUG_FOCUS
         ALOGD("Dispatch frozen.  Waiting some more.");
 #endif
+    ALOGI("===> traceKey A9.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
@@ -337,6 +341,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
 
             // Nothing to do if there is no pending event.
             if (!mPendingEvent) {
+    ALOGI("===> traceKey A9.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 return;
             }
         } else {
@@ -354,6 +359,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
         resetANRTimeoutsLocked();
     }
 
+    ALOGI("===> traceKey A9 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     // Now we have an event to dispatch.
     // All events are eventually dequeued and processed this way, even if we intend to drop them.
     ALOG_ASSERT(mPendingEvent != nullptr);
@@ -403,6 +409,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
         if (dropReason == DROP_REASON_NOT_DROPPED && mNextUnblockedEvent) {
             dropReason = DROP_REASON_BLOCKED;
         }
+    ALOGI("===> traceKey A8, keycode=%d, in %s of %s line %d" ,typedEntry->keyCode ,__func__ ,__FILE__ ,__LINE__);
         done = dispatchKeyLocked(currentTime, typedEntry, &dropReason, nextWakeupTime);
         break;
     }
@@ -795,6 +802,7 @@ bool InputDispatcher::dispatchDeviceResetLocked(
 
 bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, KeyEntry* entry,
         DropReason* dropReason, nsecs_t* nextWakeupTime) {
+    ALOGI("===> traceKey A7.2, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
     // Preprocessing.
     if (! entry->dispatchInProgress) {
         if (entry->repeatCount == 0
@@ -838,15 +846,18 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, KeyEntry* entry,
             if (entry->interceptKeyWakeupTime < *nextWakeupTime) {
                 *nextWakeupTime = entry->interceptKeyWakeupTime;
             }
+    ALOGI("===> traceKey A7.1, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
             return false; // wait until next wakeup
         }
         entry->interceptKeyResult = KeyEntry::INTERCEPT_KEY_RESULT_UNKNOWN;
         entry->interceptKeyWakeupTime = 0;
     }
 
+    ALOGI("===> traceKey A7, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
     // Give the policy a chance to intercept the key.
     if (entry->interceptKeyResult == KeyEntry::INTERCEPT_KEY_RESULT_UNKNOWN) {
         if (entry->policyFlags & POLICY_FLAG_PASS_TO_USER) {
+    ALOGI("===> traceKey A6, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
             CommandEntry* commandEntry = postCommandLocked(
                     & InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible);
             sp<InputWindowHandle> focusedWindowHandle =
@@ -866,12 +877,14 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, KeyEntry* entry,
             *dropReason = DROP_REASON_POLICY;
         }
     }
+    //ALOGI("===> traceKey A5.5, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult,  __func__, __FILE__, __LINE__);
 
     // Clean up if dropping the event.
     if (*dropReason != DROP_REASON_NOT_DROPPED) {
         setInjectionResult(entry, *dropReason == DROP_REASON_POLICY
                 ? INPUT_EVENT_INJECTION_SUCCEEDED : INPUT_EVENT_INJECTION_FAILED);
         mReporter->reportDroppedKey(entry->sequenceNum);
+    ALOGI("===> traceKey A5.4, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult,  __func__, __FILE__, __LINE__);
         return true;
     }
 
@@ -880,17 +893,20 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, KeyEntry* entry,
     int32_t injectionResult = findFocusedWindowTargetsLocked(currentTime,
             entry, inputTargets, nextWakeupTime);
     if (injectionResult == INPUT_EVENT_INJECTION_PENDING) {
+    ALOGI("===> traceKey A5.3, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult,  __func__, __FILE__, __LINE__);
         return false;
     }
 
     setInjectionResult(entry, injectionResult);
     if (injectionResult != INPUT_EVENT_INJECTION_SUCCEEDED) {
+    ALOGI("===> traceKey A5.2, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult,  __func__, __FILE__, __LINE__);
         return true;
     }
 
     // Add monitor channels from event's or focused display.
     addGlobalMonitoringTargetsLocked(inputTargets, getTargetDisplayId(entry));
 
+    //ALOGI("===> traceKey A5.1, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult,  __func__, __FILE__, __LINE__);
     // Dispatch the key.
     dispatchEventLocked(currentTime, entry, inputTargets);
     return true;
@@ -4165,6 +4181,7 @@ void InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible(
     android::base::Timer t;
     sp<IBinder> token = commandEntry->inputChannel != nullptr ?
         commandEntry->inputChannel->getToken() : nullptr;
+    ALOGI("===> traceKey A5, keycode=%d in %s of %s line %d", event.getKeyCode(), __func__, __FILE__, __LINE__);
     nsecs_t delay = mPolicy->interceptKeyBeforeDispatching(token,
             &event, entry->policyFlags);
     if (t.duration() > SLOW_INTERCEPTION_THRESHOLD) {
diff --git a/services/inputflinger/InputReader.cpp b/services/inputflinger/InputReader.cpp
index b3734e5c6..336560363 100644
--- a/services/inputflinger/InputReader.cpp
+++ b/services/inputflinger/InputReader.cpp
@@ -19,13 +19,13 @@
 //#define LOG_NDEBUG 0
 
 // Log debug messages for each raw event received from the EventHub.
-#define DEBUG_RAW_EVENTS 0
+#define DEBUG_RAW_EVENTS 1
 
 // Log debug messages about touch screen filtering hacks.
 #define DEBUG_HACKS 0
 
 // Log debug messages about virtual key processing.
-#define DEBUG_VIRTUAL_KEYS 0
+#define DEBUG_VIRTUAL_KEYS 1
 
 // Log debug messages about pointers.
 #define DEBUG_POINTERS 0
@@ -65,6 +65,8 @@
 #define INDENT4 "        "
 #define INDENT5 "          "
 
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
 using android::base::StringPrintf;
 
 namespace android {
@@ -312,6 +314,7 @@ void InputReader::loopOnce() {
         mReaderIsAliveCondition.broadcast();
 
         if (count) {
+    ALOGI("===> traceKey C3 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processEventsLocked(mEventBuffer, count);
         }
 
@@ -344,6 +347,7 @@ void InputReader::loopOnce() {
     // resulting in a deadlock.  This situation is actually quite plausible because the
     // listener is actually the input dispatcher, which calls into the window manager,
     // which occasionally calls into the input reader.
+    ALOGI("===> traceKey C0 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     mQueuedListener->flush();
 }
 
@@ -363,6 +367,7 @@ void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) {
 #if DEBUG_RAW_EVENTS
             ALOGD("BatchSize: %zu Count: %zu", batchSize, count);
 #endif
+    ALOGI("===> traceKey C2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processEventsForDeviceLocked(deviceId, rawEvent, batchSize);
         } else {
             switch (rawEvent->type) {
@@ -524,15 +529,18 @@ void InputReader::processEventsForDeviceLocked(int32_t deviceId,
     ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
     if (deviceIndex < 0) {
         ALOGW("Discarding event for unknown deviceId %d.", deviceId);
+    BLOGI("===> traceKey C1.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
     InputDevice* device = mDevices.valueAt(deviceIndex);
     if (device->isIgnored()) {
         //ALOGD("Discarding event for ignored deviceId %d.", deviceId);
+    BLOGI("===> traceKey C1.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
+    ALOGI("===> traceKey C1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     device->process(rawEvents, count);
 }
 
@@ -1159,6 +1167,7 @@ void InputDevice::process(const RawEvent* rawEvents, size_t count) {
             reset(rawEvent->when);
         } else {
             for (InputMapper* mapper : mMappers) {
+    ALOGI("===> traceKey C0.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 mapper->process(rawEvent);
             }
         }
@@ -2302,6 +2311,7 @@ void KeyboardInputMapper::process(const RawEvent* rawEvent) {
         mCurrentHidUsage = 0;
 
         if (isKeyboardOrGamepadKey(scanCode)) {
+    ALOGI("===> traceKey C0.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processKey(rawEvent->when, rawEvent->value != 0, scanCode, usageCode);
         }
         break;
traceKey2.diff (12,392 bytes)   

(ALTech) Younkwang Jung

2022-12-27 15:09

developer   ~0011585

Hi Bcan

I think it's okay.
please make v15.534.401 FW version by applying only below two patches based on v15.534.28.
(ND/SD/SU)
1) traceKey1.diff (4,705 bytes)
2) traceKey2.diff (12,392 bytes)

If you send me the built FW(v15.534.401), our QA will proceed with the additional test

Thank you
YK.Jung

(ALTech) Younkwang Jung

2022-12-28 09:22

developer   ~0011592

Hi Bcan

Please build and send the FW before lunch today
then , we can test it during the weekend

Thank you
YK.Jung

(SW) Bcan Yeh

2022-12-28 10:19

developer   ~0011594

Hi YK,

Test images (15.534.401) are uploaded.
Please check it via the link below.
https://drive.google.com/drive/folders/1vDe6_PrZ6mb87ml9JPGpigZyL_VUhNzO?usp=share_link

(ALTech) Younkwang Jung

2023-01-04 15:25

developer   ~0011648

Hi Bcan

We did a test with the SD image over the weekend, but issue has not been observed yet.
and your log doesn't seem to have any issues. but I am not sure

The point now is to decide whether to apply this patch to the "branch BFX-AT100_5.3.4a" that is now being prepared for field distribution.
Please send me your opinion. (please discuss with Kerwin. )

But just in case, I'm testing the test SU image you gave me by burning it.
The following error logs are still being observed. what's the problem?
==============================================================================
01-04 16:09:47.644 4563 7461 I ChimeraSrvcProxy: NullBinder for com.google.android.gms.auth.cryptauth.cryptauthservice.START triggering remote TransactionTooLargeException due to Service without Chimera impl
01-04 16:09:47.644 4288 4472 E JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 460)
01-04 16:09:47.645 4288 4472 W GmsClient: IGmsServiceBroker.getService failed
01-04 16:09:47.645 4288 4472 W GmsClient: android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died
01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.BinderProxy.transactNative(Native Method)
01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.BinderProxy.transact(BinderProxy.java:510)
01-04 16:09:47.645 4288 4472 W GmsClient: at myi.c(:com.google.android.gms@221514099@22.15.14 (080306-441847897):5)
01-04 16:09:47.645 4288 4472 W GmsClient: at mwj.s(:com.google.android.gms@221514099@22.15.14 (080306-441847897):13)
01-04 16:09:47.645 4288 4472 W GmsClient: at mgd.run(:com.google.android.gms@221514099@22.15.14 (080306-441847897):5)
01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.Handler.handleCallback(Handler.java:883)
01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.Handler.dispatchMessage(Handler.java:100)
01-04 16:09:47.645 4288 4472 W GmsClient: at xwi.hF(:com.google.android.gms@221514099@22.15.14 (080306-441847897):0)
01-04 16:09:47.645 4288 4472 W GmsClient: at xwi.dispatchMessage(:com.google.android.gms@221514099@22.15.14 (080306-441847897):11)
01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.Looper.loop(Looper.java:214)
01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.HandlerThread.run(HandlerThread.java:67)
01-04 16:09:47.776 3502 3502 W ATVRemoteAudioH: type=1400 audit(0.0:735): avc: denied { call } for scontext=u:r:hal_audio_amlogic:s0 tcontext=u:r:rc_server:s0 tclass=binder permissive=0
01-04 16:09:47.777 3502 3765 W ServiceManagement: getService: unable to call into hwbinder service for vendor.amlogic.hardware.remotecontrol@1.0::IRemoteControl/default.
01-04 16:09:47.941 4456 4600 D iSQMSAgent_LogSystem: CISQMSMain::is_time_to_send_data
01-04 16:09:47.941 4456 4600 D iSQMSAgent_LogSystem: CISQMSHolePunching::send_keep_alive_to_report_server
01-04 16:09:47.941 4456 4600 D iSQMSAgent_LogSystem: CISQMSHolePunching::send_keep_alive_to_report_server 0x00001
===================================================================

Thank you
YK.Jung

(SW) Bcan Yeh

2023-01-04 18:22

developer   ~0011658

Hi YK,

1. After discussing with Kerwin, we think it's OK to deploy FW(v15.534.401) for getting more information of the losing OK button.
2. This error could also be checked in userdebug build.
    It comes from Katniss for not connecting location service. (WIFI is needed)
    The error messages will only appear repeatedly for several minutes.
    It is a normal situation. Please don't worry.

(ALTech) Younkwang Jung

2023-01-05 08:15

developer   ~0011662

HI Bcan

I see , please apply it to "branch BFX-AT100_5.3.4a"
and please let me know when it's done.

Thank you
YK.Jung

(SW) Bcan Yeh

2023-01-05 11:08

developer   ~0011671

Hi YK,

    The patches are applied.
    Please check it.
1672887915846.jpg (273,222 bytes)
1672887961674.jpg (286,960 bytes)

(ALTech) Younkwang Jung

2023-01-27 14:10

developer   ~0011859

HI Bcan

Please apply this patch to Smart3 UI536 (ATV10)

Thank you
YK.Jung

(SW) Bcan Yeh

2023-01-30 09:26

developer   ~0011866

Hi YK,

The above patches are committed to branch BFX-AT100_5.3.6.

(ALTech) JunGyu Kim

2024-05-27 18:15

developer   ~0015899

Hi Bcan,

While checking recent RCU-related VOC issues, I found a log that remained among the issues where the OK button did not work.
When I checked the log, there were traces of entering the OK button in the dmesg log, but there was no trace of entering the button in the main log.
[05-18 23:49:42.727] key down 232

After checking the logs some more, it seems that the key is not being passed to the UI at the point below.
05-18 23:49:40.352 3863 3962 I InputDispatcher: ===> traceKey A9.1 in dispatchOnceInnerLocked of frameworks/native/services/inputflinger/InputDispatcher.cpp line 344

Please check the log and see if there are any points that could be the cause.
Please refer attached log.

Thank you.
Kim

(ALTech) Younkwang Jung

2024-05-30 12:32

developer   ~0015915

Hi Bcan

Please update the progress

Thank you
YK.Jung

(SW) Bcan Yeh

2024-05-30 18:16

developer   ~0015927

Hi YK,

    I am still checking.
    If you have more logs, please also provide them to me.

(ALTech) Younkwang Jung

2024-06-04 11:57

developer   ~0015945

Hi Bcan

There are no more logs.
If the logs of this issue have an addition, we will provide them to you.

and please update the analysis results so far

Thank you
YK.Jung

(SW) Bcan Yeh

2024-06-07 10:22

developer   ~0015966

Last edited: 2024-06-07 10:23

Hi YK,

    After checking, we found that the problem might happen in the path from driver to EventHub.
    For advanced tracing, we need to enable the debug message of EventHub and maybe add some log into the driver.
    Could you tell me current number of smart3(android 10) and smart3(android 12) in the field?
    Does this issue also happen in smart3(android 12) ?

(ALTech) Younkwang Jung

2024-06-07 14:36

developer   ~0015968

Last edited: 2024-06-07 14:36

View 2 revisions

Hi Bacn

OS12 has not been deployed much yet.
Therefore, it is not yet confirmed whether this issue is observed in OS12.

The final version of the OS10 field is v15.541.66
The final version of the OS12 field is v15.542.60

If you are preparing a patch, please make a test patch with OS10(UI541) and share it with us first.
Please don't apply it to UI541 yet.

Thank you
YK.Jung

(SW) Bcan Yeh

2024-06-13 13:59

developer   ~0016006

Hi YK,

Here is the download link of test images.
https://drive.google.com/drive/folders/1o4vPvjtwDlMFeuQhd7okT5jwZVkVkOYg?usp=sharing

Please refer to traceKey3.diff for modifications.
traceKey3.diff (4,672 bytes)   
diff --git a/services/inputflinger/EventHub.cpp b/services/inputflinger/EventHub.cpp
index ce5627271..a0ecc115a 100644
--- a/services/inputflinger/EventHub.cpp
+++ b/services/inputflinger/EventHub.cpp
@@ -33,7 +33,7 @@
 
 #define LOG_TAG "EventHub"
 
-// #define LOG_NDEBUG 0
+#define LOG_NDEBUG 0
 
 #include "EventHub.h"
 
@@ -885,6 +885,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
             }
         }
 
+        ALOGI("===> traceKey D7, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         // Grab the next input event.
         bool deviceChanged = false;
         while (mPendingEventIndex < mPendingEventCount) {
@@ -941,27 +942,34 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                 }
                 continue;
             }
+
+            ALOGI("===> traceKey D6, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             // This must be an input event
             if (eventItem.events & EPOLLIN) {
                 int32_t readSize = read(device->fd, readBuffer,
                         sizeof(struct input_event) * capacity);
+                ALOGI("===> traceKey D6-1, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
                     // Device was removed before INotify noticed.
                     ALOGW("could not get event, removed? (fd: %d size: %" PRId32
                             " bufferSize: %zu capacity: %zu errno: %d)\n",
                             device->fd, readSize, bufferSize, capacity, errno);
+                ALOGI("===> traceKey D6-1a, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     deviceChanged = true;
                     closeDeviceLocked(device);
                 } else if (readSize < 0) {
+                ALOGI("===> traceKey D6-1b, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     if (errno != EAGAIN && errno != EINTR) {
                         ALOGW("could not get event (errno=%d)", errno);
                     }
                 } else if ((readSize % sizeof(struct input_event)) != 0) {
+                ALOGI("===> traceKey D6-1c, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     ALOGE("could not get event (wrong size: %d)", readSize);
                 } else {
                     int32_t deviceId = device->id == mBuiltInKeyboardId ? 0 : device->id;
 
                     size_t count = size_t(readSize) / sizeof(struct input_event);
+                ALOGI("===> traceKey D6-1d, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     for (size_t i = 0; i < count; i++) {
                         struct input_event& iev = readBuffer[i];
                         event->when = processEventTimestamp(iev);
@@ -973,6 +981,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                         capacity -= 1;
                     }
                     if (capacity == 0) {
+                ALOGI("===> traceKey D6-1d buffer full, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                         // The result buffer is full.  Reset the pending event index
                         // so we will try to read the device again on the next iteration.
                         mPendingEventIndex -= 1;
@@ -980,16 +989,19 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                     }
                 }
             } else if (eventItem.events & EPOLLHUP) {
+                ALOGI("===> traceKey D6-2, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 ALOGI("Removing device %s due to epoll hang-up event.",
                         device->identifier.name.c_str());
                 deviceChanged = true;
                 closeDeviceLocked(device);
             } else {
+                ALOGI("===> traceKey D6-3, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 ALOGW("Received unexpected epoll event 0x%08x for device %s.",
                         eventItem.events, device->identifier.name.c_str());
             }
         }
 
+        ALOGI("===> traceKey D5, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         // readNotify() will modify the list of devices so this must be done after
         // processing all other events to ensure that we read all remaining events
         // before closing the devices.
traceKey3.diff (4,672 bytes)   

(ALTech) JunGyu Kim

2024-06-14 18:56

developer   ~0016045

Hi Bcan,

I have attached another log for OK button is not working.
Please check these log files also.

Thank you.
Kim

(SW) Bcan Yeh

2024-06-17 11:12

developer   ~0016050

Hi Kim,

Thanks for the information.
After checking these logs, we have the same conclusion as note #c15966.

(ALTech) Younkwang Jung

2024-07-23 16:47

developer   ~0016325

Hi Bcan

OS10 has not yet been scheduled for further deployment.

Therefore, further review should be applied to OS12.
At present, more than 50% of OS12 FW has been distributed to users and will continue to increase. and this issue is also being observed in OS12.
Therefore, patches for additional debugging should be applied to OS12.

So please prepare the debug patch to be applied to OS12.
- The debug log should not be output too much. (there should be no load on the system.)
- It is easy to collect logs from the field if a particular string can be output in the event of an issue.

Please use the branch below for code base. (BFX-AT100_5.4.2_Sprint2)
repo init -u ssh://git@bitbucket.skbroadband.com:7999/fstb-12/manifests.git -b BFX-AT100_5.4.2_Sprint2

Please share the patch when it is ready.

Thank you
YK.Jung

(ALTech) Younkwang Jung

2024-07-25 09:34

developer   ~0016331

Hi Bcan

Please update me on the progress.
When can I get the patch ?

Thank you
YK.Jung

(SW) Bcan Yeh

2024-07-26 10:40

developer   ~0016338

Hi YK,

    Basically, it will use the same patches. (traceKey1.diff, traceKey2.diff, traceKey3.diff)
    Because there are some differences betteen Android 10/12, extra modification is needed.
    The new patch will be provided on 7/30.

(SW) Bcan Yeh

2024-07-29 17:33

developer   ~0016352

Hi YK,

    Attached files are the patches for Android 12.
    As for your requirement "It is easy to collect logs from the field if a particular string can be output in the event of an issue", please check the note 11501.
    
Regards,
Bcan
0001-Add-debug-messages-for-losing-OK-key-1-2.patch (4,811 bytes)   
From 432737ad97a9a0bfbe03b593ad26aeea3e6c4b8e Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Mon, 29 Jul 2024 17:14:45 +0800
Subject: [PATCH] Add debug messages for losing OK key (1/2)

---
 .../java/com/android/server/input/InputManagerService.java    | 1 +
 .../java/com/android/server/policy/PhoneWindowManager.java    | 4 ++++
 .../core/java/com/android/server/wm/InputManagerCallback.java | 1 +
 .../core/jni/com_android_server_input_InputManagerService.cpp | 1 +
 4 files changed, 7 insertions(+)

diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 6fb9e58a49d1..0f4f3430c8fa 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -2820,6 +2820,7 @@ public class InputManagerService extends IInputManager.Stub
 
     // Native callback.
     private long interceptKeyBeforeDispatching(IBinder focus, KeyEvent event, int policyFlags) {
+        Slog.w(TAG, "===> traceKey A3, keycode="+event.getKeyCode()+" in interceptKeyBeforeDispatching of InputManagerService.java");
         return mWindowManagerCallbacks.interceptKeyBeforeDispatching(focus, event, policyFlags);
     }
 
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 5015954083c1..69542c44cd92 100755
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2817,6 +2817,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
     @Override
     public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent eventIn,
             int policyFlags) {
+        Log.d(TAG, "====> traceKey A1, keycode="+eventIn.getKeyCode()+" in interceptKeyBeforeDispatching of PhoneWindowManager.java");
 		// add SPTEK
 		KeyEvent event = new KeyEvent(eventIn);
 		// add SPTEK.MW : 2022.09.30 : E +
@@ -2830,6 +2831,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
         final int displayId = event.getDisplayId();
         final long key_consumed = -1;
 
+        Log.d(TAG, "====> traceKey A0, keycode="+keyCode+" in interceptKeyBeforeDispatching of PhoneWindowManager.java");
+
         if (DEBUG_INPUT) {
 			Log.i(TAG, "interceptKeyTi keyCode=" + keyCode + " down=" + down + " repeatCount="
                     + repeatCount + " keyguardOn=" + keyguardOn 
@@ -3817,6 +3820,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
         final int displayId = event.getDisplayId();
         final boolean isInjected = (policyFlags & WindowManagerPolicy.FLAG_INJECTED) != 0;
 
+        Log.d(TAG, "====> traceKey B0, keycode="+keyCode+" in interceptKeyBeforeQueueing of PhoneWindowManager.java");
         if (DEBUG_INPUT) {
             // If screen is off then we treat the case where the keyguard is open but hidden
             // the same as if it were open and in front.
diff --git a/services/core/java/com/android/server/wm/InputManagerCallback.java b/services/core/java/com/android/server/wm/InputManagerCallback.java
index aa7e6c9c80fc..7dcd71214644 100644
--- a/services/core/java/com/android/server/wm/InputManagerCallback.java
+++ b/services/core/java/com/android/server/wm/InputManagerCallback.java
@@ -164,6 +164,7 @@ final class InputManagerCallback implements InputManagerService.WindowManagerCal
     @Override
     public long interceptKeyBeforeDispatching(
             IBinder focusedToken, KeyEvent event, int policyFlags) {
+        Slog.i(TAG_WM, "===> traceKey A2, keycode="+event.getKeyCode()+" in interceptKeyBeforeDispatching of InputManagerCallback.java");
         return mService.mPolicy.interceptKeyBeforeDispatching(focusedToken, event, policyFlags);
     }
 
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index a94ad4ad7ef2..4de6cb72a5f0 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -1297,6 +1297,7 @@ nsecs_t NativeInputManager::interceptKeyBeforeDispatching(
 
         jobject keyEventObj = android_view_KeyEvent_fromNative(env, keyEvent);
         if (keyEventObj) {
+            ALOGI("===> traceKey A4, keyCode=%d in %s of %s line %d", keyEvent->getKeyCode(), __func__, __FILE__,__LINE__);
             jlong delayMillis = env->CallLongMethod(mServiceObj,
                     gServiceClassInfo.interceptKeyBeforeDispatching,
                     tokenObj, keyEventObj, policyFlags);
-- 
2.25.1

0001-Add-debug-messages-for-losing-OK-key-2-2.patch (16,197 bytes)   
From 3a6cc55a2ea651c99e5449416e996f46014e1ade Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Mon, 29 Jul 2024 17:15:17 +0800
Subject: [PATCH] Add debug messages for losing OK key (2/2)

---
 .../dispatcher/InputDispatcher.cpp            | 31 +++++++++++++------
 services/inputflinger/reader/EventHub.cpp     | 12 +++++++
 services/inputflinger/reader/InputDevice.cpp  |  1 +
 services/inputflinger/reader/InputReader.cpp  |  8 +++++
 .../reader/mapper/KeyboardInputMapper.cpp     |  1 +
 5 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/services/inputflinger/dispatcher/InputDispatcher.cpp b/services/inputflinger/dispatcher/InputDispatcher.cpp
index 09561fb2be..71d3554d40 100644
--- a/services/inputflinger/dispatcher/InputDispatcher.cpp
+++ b/services/inputflinger/dispatcher/InputDispatcher.cpp
@@ -19,35 +19,35 @@
 
 #define ATRACE_TAG ATRACE_TAG_INPUT
 
-#define LOG_NDEBUG 1
+#define LOG_NDEBUG 0
 
 // Log detailed debug messages about each inbound event notification to the dispatcher.
-#define DEBUG_INBOUND_EVENT_DETAILS 0
+#define DEBUG_INBOUND_EVENT_DETAILS 1
 
 // Log detailed debug messages about each outbound event processed by the dispatcher.
-#define DEBUG_OUTBOUND_EVENT_DETAILS 0
+#define DEBUG_OUTBOUND_EVENT_DETAILS 1
 
 // Log debug messages about the dispatch cycle.
-#define DEBUG_DISPATCH_CYCLE 0
+#define DEBUG_DISPATCH_CYCLE 1
 
 // Log debug messages about channel creation
-#define DEBUG_CHANNEL_CREATION 0
+#define DEBUG_CHANNEL_CREATION 1
 
 // Log debug messages about input event injection.
-#define DEBUG_INJECTION 0
+#define DEBUG_INJECTION 1
 
 // Log debug messages about input focus tracking.
-static constexpr bool DEBUG_FOCUS = false;
+static constexpr bool DEBUG_FOCUS = true;
 
 // Log debug messages about touch occlusion
 // STOPSHIP(b/169067926): Set to false
 static constexpr bool DEBUG_TOUCH_OCCLUSION = true;
 
 // Log debug messages about the app switch latency optimization.
-#define DEBUG_APP_SWITCH 0
+#define DEBUG_APP_SWITCH 1
 
 // Log debug messages about hover events.
-#define DEBUG_HOVER 0
+#define DEBUG_HOVER 1
 
 #include <android-base/chrono_utils.h>
 #include <android-base/properties.h>
@@ -685,6 +685,7 @@ std::chrono::nanoseconds InputDispatcher::getDispatchingTimeoutLocked(const sp<I
 void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
     nsecs_t currentTime = now();
 
+    ALOGI("===> traceKey A10, mDispatchEnabled=%d, mDispatchFrozen=%d in %s of %s line %d" ,mDispatchEnabled ,mDispatchFrozen ,__func__ ,__FILE__ ,__LINE__);
     // Reset the key repeat timer whenever normal dispatch is suspended while the
     // device is in a non-interactive state.  This is to ensure that we abort a key
     // repeat if the device is just coming out of sleep.
@@ -697,6 +698,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
         if (DEBUG_FOCUS) {
             ALOGD("Dispatch frozen.  Waiting some more.");
         }
+    ALOGI("===> traceKey A9.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
@@ -732,6 +734,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
 
             // Nothing to do if there is no pending event.
             if (!mPendingEvent) {
+    ALOGI("===> traceKey A9.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 return;
             }
         } else {
@@ -747,6 +750,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
         }
     }
 
+    ALOGI("===> traceKey A9 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     // Now we have an event to dispatch.
     // All events are eventually dequeued and processed this way, even if we intend to drop them.
     ALOG_ASSERT(mPendingEvent != nullptr);
@@ -820,6 +824,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
             if (dropReason == DropReason::NOT_DROPPED && mNextUnblockedEvent) {
                 dropReason = DropReason::BLOCKED;
             }
+    ALOGI("===> traceKey A8, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             done = dispatchKeyLocked(currentTime, keyEntry, &dropReason, nextWakeupTime);
             break;
         }
@@ -1363,6 +1368,7 @@ void InputDispatcher::dispatchPointerCaptureChangedLocked(
 
 bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, std::shared_ptr<KeyEntry> entry,
                                         DropReason* dropReason, nsecs_t* nextWakeupTime) {
+    ALOGI("===> traceKey A7.2, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
     // Preprocessing.
     if (!entry->dispatchInProgress) {
         if (entry->repeatCount == 0 && entry->action == AKEY_EVENT_ACTION_DOWN &&
@@ -1416,15 +1422,18 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, std::shared_ptr<Key
             if (entry->interceptKeyWakeupTime < *nextWakeupTime) {
                 *nextWakeupTime = entry->interceptKeyWakeupTime;
             }
+    ALOGI("===> traceKey A7.1, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
             return false; // wait until next wakeup
         }
         entry->interceptKeyResult = KeyEntry::INTERCEPT_KEY_RESULT_UNKNOWN;
         entry->interceptKeyWakeupTime = 0;
     }
 
+    ALOGI("===> traceKey A7, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
     // Give the policy a chance to intercept the key.
     if (entry->interceptKeyResult == KeyEntry::INTERCEPT_KEY_RESULT_UNKNOWN) {
         if (entry->policyFlags & POLICY_FLAG_PASS_TO_USER) {
+    ALOGI("===> traceKey A6, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
             std::unique_ptr<CommandEntry> commandEntry = std::make_unique<CommandEntry>(
                     &InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible);
             sp<IBinder> focusedWindowToken =
@@ -1448,6 +1457,7 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, std::shared_ptr<Key
                            *dropReason == DropReason::POLICY ? InputEventInjectionResult::SUCCEEDED
                                                              : InputEventInjectionResult::FAILED);
         mReporter->reportDroppedKey(entry->id);
+    ALOGI("===> traceKey A5.4, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult,  __func__, __FILE__, __LINE__);
         return true;
     }
 
@@ -1456,11 +1466,13 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, std::shared_ptr<Key
     InputEventInjectionResult injectionResult =
             findFocusedWindowTargetsLocked(currentTime, *entry, inputTargets, nextWakeupTime);
     if (injectionResult == InputEventInjectionResult::PENDING) {
+    ALOGI("===> traceKey A5.3, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult,  __func__, __FILE__, __LINE__);
         return false;
     }
 
     setInjectionResult(*entry, injectionResult);
     if (injectionResult != InputEventInjectionResult::SUCCEEDED) {
+    ALOGI("===> traceKey A5.2, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult,  __func__, __FILE__, __LINE__);
         return true;
     }
 
@@ -5704,6 +5716,7 @@ void InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible(
 
     android::base::Timer t;
     const sp<IBinder>& token = commandEntry->connectionToken;
+    ALOGI("===> traceKey A5, keycode=%d in %s of %s line %d", event.getKeyCode(), __func__, __FILE__, __LINE__);
     nsecs_t delay = mPolicy->interceptKeyBeforeDispatching(token, &event, entry.policyFlags);
     if (t.duration() > SLOW_INTERCEPTION_THRESHOLD) {
         ALOGW("Excessive delay in interceptKeyBeforeDispatching; took %s ms",
diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
index b19b4195d1..de1135e754 100644
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -1545,6 +1545,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
             }
         }
 
+    ALOGI("===> traceKey D7, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         // Grab the next input event.
         bool deviceChanged = false;
         while (mPendingEventIndex < mPendingEventCount) {
@@ -1601,27 +1602,34 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                 }
                 continue;
             }
+
+    ALOGI("===> traceKey D6, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             // This must be an input event
             if (eventItem.events & EPOLLIN) {
                 int32_t readSize =
                         read(device->fd, readBuffer, sizeof(struct input_event) * capacity);
+    ALOGI("===> traceKey D6-1, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
                     // Device was removed before INotify noticed.
                     ALOGW("could not get event, removed? (fd: %d size: %" PRId32
                           " bufferSize: %zu capacity: %zu errno: %d)\n",
                           device->fd, readSize, bufferSize, capacity, errno);
+    ALOGI("===> traceKey D6-1a, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     deviceChanged = true;
                     closeDeviceLocked(*device);
                 } else if (readSize < 0) {
+    ALOGI("===> traceKey D6-1b, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     if (errno != EAGAIN && errno != EINTR) {
                         ALOGW("could not get event (errno=%d)", errno);
                     }
                 } else if ((readSize % sizeof(struct input_event)) != 0) {
+    ALOGI("===> traceKey D6-1c, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     ALOGE("could not get event (wrong size: %d)", readSize);
                 } else {
                     int32_t deviceId = device->id == mBuiltInKeyboardId ? 0 : device->id;
 
                     size_t count = size_t(readSize) / sizeof(struct input_event);
+    ALOGI("===> traceKey D6-1d, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     for (size_t i = 0; i < count; i++) {
                         struct input_event& iev = readBuffer[i];
                         event->when = processEventTimestamp(iev);
@@ -1634,6 +1642,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                         capacity -= 1;
                     }
                     if (capacity == 0) {
+    ALOGI("===> traceKey D6-1d buffer full, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                         // The result buffer is full.  Reset the pending event index
                         // so we will try to read the device again on the next iteration.
                         mPendingEventIndex -= 1;
@@ -1641,16 +1650,19 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                     }
                 }
             } else if (eventItem.events & EPOLLHUP) {
+    ALOGI("===> traceKey D6-2, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 ALOGI("Removing device %s due to epoll hang-up event.",
                       device->identifier.name.c_str());
                 deviceChanged = true;
                 closeDeviceLocked(*device);
             } else {
+    ALOGI("===> traceKey D6-3, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 ALOGW("Received unexpected epoll event 0x%08x for device %s.", eventItem.events,
                       device->identifier.name.c_str());
             }
         }
 
+    ALOGI("===> traceKey D5, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         // readNotify() will modify the list of devices so this must be done after
         // processing all other events to ensure that we read all remaining events
         // before closing the devices.
diff --git a/services/inputflinger/reader/InputDevice.cpp b/services/inputflinger/reader/InputDevice.cpp
index 7af014cb34..a476bf7108 100644
--- a/services/inputflinger/reader/InputDevice.cpp
+++ b/services/inputflinger/reader/InputDevice.cpp
@@ -401,6 +401,7 @@ void InputDevice::process(const RawEvent* rawEvents, size_t count) {
             reset(rawEvent->when);
         } else {
             for_each_mapper_in_subdevice(rawEvent->deviceId, [rawEvent](InputMapper& mapper) {
+    ALOGI("===> traceKey C0.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 mapper.process(rawEvent);
             });
         }
diff --git a/services/inputflinger/reader/InputReader.cpp b/services/inputflinger/reader/InputReader.cpp
index 10c04f606c..74c7963b84 100644
--- a/services/inputflinger/reader/InputReader.cpp
+++ b/services/inputflinger/reader/InputReader.cpp
@@ -34,6 +34,8 @@
 
 #include "InputDevice.h"
 
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
 using android::base::StringPrintf;
 
 namespace android {
@@ -112,6 +114,7 @@ void InputReader::loopOnce() {
         mReaderIsAliveCondition.notify_all();
 
         if (count) {
+    ALOGI("===> traceKey C3 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processEventsLocked(mEventBuffer, count);
         }
 
@@ -144,6 +147,7 @@ void InputReader::loopOnce() {
     // resulting in a deadlock.  This situation is actually quite plausible because the
     // listener is actually the input dispatcher, which calls into the window manager,
     // which occasionally calls into the input reader.
+    ALOGI("===> traceKey C0 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     mQueuedListener->flush();
 }
 
@@ -163,6 +167,7 @@ void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) {
 #if DEBUG_RAW_EVENTS
             ALOGD("BatchSize: %zu Count: %zu", batchSize, count);
 #endif
+    ALOGI("===> traceKey C2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processEventsForDeviceLocked(deviceId, rawEvent, batchSize);
         } else {
             switch (rawEvent->type) {
@@ -298,15 +303,18 @@ void InputReader::processEventsForDeviceLocked(int32_t eventHubId, const RawEven
     auto deviceIt = mDevices.find(eventHubId);
     if (deviceIt == mDevices.end()) {
         ALOGW("Discarding event for unknown eventHubId %d.", eventHubId);
+    BLOGI("===> traceKey C1.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
     std::shared_ptr<InputDevice>& device = deviceIt->second;
     if (device->isIgnored()) {
         // ALOGD("Discarding event for ignored deviceId %d.", deviceId);
+    BLOGI("===> traceKey C1.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
+    ALOGI("===> traceKey C1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     device->process(rawEvents, count);
 }
 
diff --git a/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp b/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp
index 2ebca43c57..8860b18394 100644
--- a/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp
+++ b/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp
@@ -214,6 +214,7 @@ void KeyboardInputMapper::process(const RawEvent* rawEvent) {
             mCurrentHidUsage = 0;
 
             if (isKeyboardOrGamepadKey(scanCode)) {
+    ALOGI("===> traceKey C0.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 processKey(rawEvent->when, rawEvent->readTime, rawEvent->value != 0, scanCode,
                            usageCode);
             }
-- 
2.25.1

(ALTech) Wooshin Kang

2024-07-30 08:35

developer   ~0016353

Hi Bcan,

We will check your patch and share you the result.

Thanks.

(ALTech) Younkwang Jung

2024-08-07 13:49

developer   ~0016406

HI Bcan

I checked after applying the test patch files.

you opened all the debug messages as below. And you added debug log...
==========================================================================
 // Log detailed debug messages about each inbound event notification to the dispatcher.
-#define DEBUG_INBOUND_EVENT_DETAILS 0
+#define DEBUG_INBOUND_EVENT_DETAILS 1
 
 // Log detailed debug messages about each outbound event processed by the dispatcher.
-#define DEBUG_OUTBOUND_EVENT_DETAILS 0
+#define DEBUG_OUTBOUND_EVENT_DETAILS 1
..
 // Log debug messages about hover events.
-#define DEBUG_HOVER 0
+#define DEBUG_HOVER 1
==========================================================================

When I checked test FW with the test patchs
If I press the OK button once, 75 traceKey logs are output
==============================================================
08-07 14:05:18.904 3755 3872 I EventHub: ===> traceKey D7, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1548
08-07 14:05:18.904 3755 3872 I EventHub: ===> traceKey D6, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1606
08-07 14:05:18.904 3755 3872 I EventHub: ===> traceKey D6-1, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1611
08-07 14:05:18.904 3755 3872 I EventHub: ===> traceKey D6-1d, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1632
...
08-07 14:05:19.046 3755 3871 I InputDispatcher: ===> traceKey A9.1 in dispatchOnceInnerLocked of frameworks/native/services/inputflinger/dispatcher/InputDispatcher.cpp line 737
..
08-07 14:05:19.057 3755 3871 I InputDispatcher: ===> traceKey A9.1 in dispatchOnceInnerLocked of frameworks/native/services/inputflinger/dispatcher/InputDispatcher.cpp line 737
=================================================================================================================================
SKB doesn't want a lot of logs to be printed at OS12

First of all, please give us your opinion on the following items.
1) Is there a way to reduce logs (meaningless logs need to be deleted)
2) Please check if it is possible to modify the code in the following way.
      As far as I know, Key delivery is operated in the following order.
      EventHub --> InputReader --> InputDispatcher --> WindowManager
      If you detect the OK button at EventHub, which is the first input, So store the OK_count++ value in memory or file or property.
      and the OK button is entered in the WindowManager, it is a normal case, so OK_count--
      So if there is no problem, the value of OK_count will be 0 or 1.
      If the problem occurs, OK_count will be 2 or higher, then you can print error log at WindowManager
      This will make debugging easier.
      Is it possible to implement code for debug in a similar way?

Thank you
YK.Jung

(SW) Bcan Yeh

2024-08-07 17:15

developer   ~0016410

Hi YK,

1. OK, I will reduce related debug messages.
2. I will try to add this debug feature.

(ALTech) Younkwang Jung

2024-08-20 08:06

developer   ~0016482

Hi Bcan

Please update me on the progress
When can we get test patch ?

Thank you
YK.Jung

(SW) Bcan Yeh

2024-08-22 08:46

developer   ~0016528

Hi YK,

    The patch will be provided in 8/23.

(ALTech) Younkwang Jung

2024-08-22 09:22

developer   ~0016530

Hi Bcan

I got it,

thank you
YK.Jung

(SW) Bcan Yeh

2024-08-23 11:34

developer   ~0016557

Hi YK,

    Attached files are the patches for Android 12. Please check it.
    1. traceKey logs are reduced
    2. About "OK_count"
        a. use property "sys.vasott.key_check" for recording
        b. set key_check 1 in EventHub.java
        c. key_check-- in PhoneWindowManager.java
        d. Normally, "===> traceKey A1, update key_check_val=0" will appear twice(keyDown and keyUp) for each key
        e. if it shows "===> traceKey A1, update key_check_val=-1", it means users press keys quickly.
        f. if it shows "===> traceKey A1, update key_check_val=1", it means a key event is missed.
        g. The "OK_count" method may not work and always shows "key_check_val=0" and "key_check_val=-1" if the root cause located before the point "set key_check 1" in EventHub.java
0001-Add-debug-message-for-missing-OK-key-1-3.patch (1,507 bytes)   
From b39cdd404e8ff7698dfa5afad5a799add8262b92 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 09:50:05 +0800
Subject: [PATCH] Add debug message for missing OK key (1/3)

---
 .../android/server/policy/PhoneWindowManager.java    | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 5015954083c1..952a1aa9b1d9 100755
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2837,6 +2837,18 @@ public class PhoneWindowManager implements WindowManagerPolicy {
 					+ " mDeviceId=" + event.getDeviceId() + " mSource=" + event.getSource() + " mScanCode="	+ event.getScanCode() + " mCharacters=" + event.getCharacters());
         }
 
+        String key_check = SystemProperties.get("sys.vasott.key_check");
+        int key_check_val = 0;
+        try{
+            key_check_val = Integer.parseInt(key_check);
+        } catch(NumberFormatException e){
+            e.printStackTrace();
+            key_check_val = 0;
+        }
+        key_check_val = key_check_val-1;
+        Log.i(TAG,"===> traceKey A1, update key_check_val="+key_check_val);
+        SystemProperties.set("sys.vasott.key_check", String.valueOf(key_check_val));
+
 		//SPTEK.MW : lastinput key property setting
 		if(down)
 		{
-- 
2.25.1

0001-Add-debug-message-for-missing-OK-key-2-3.patch (7,206 bytes)   
From 9468d87287a70d680c21eba700296931f3e541f9 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 09:52:21 +0800
Subject: [PATCH] Add debug message for missing OK key (2/3)

---
 services/inputflinger/reader/EventHub.cpp    | 14 ++++++++++++++
 services/inputflinger/reader/InputReader.cpp |  8 ++++++++
 2 files changed, 22 insertions(+)

diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
index b19b4195d1..acefd74e20 100644
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -1545,6 +1545,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
             }
         }
 
+    ALOGI("===> traceKey D7, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         // Grab the next input event.
         bool deviceChanged = false;
         while (mPendingEventIndex < mPendingEventCount) {
@@ -1601,27 +1602,36 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                 }
                 continue;
             }
+
+    ALOGI("===> traceKey D6, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             // This must be an input event
             if (eventItem.events & EPOLLIN) {
                 int32_t readSize =
                         read(device->fd, readBuffer, sizeof(struct input_event) * capacity);
+    ALOGI("===> traceKey D6-1, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
                     // Device was removed before INotify noticed.
                     ALOGW("could not get event, removed? (fd: %d size: %" PRId32
                           " bufferSize: %zu capacity: %zu errno: %d)\n",
                           device->fd, readSize, bufferSize, capacity, errno);
+    ALOGI("===> traceKey D6-1a, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     deviceChanged = true;
                     closeDeviceLocked(*device);
                 } else if (readSize < 0) {
+    ALOGI("===> traceKey D6-1b, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     if (errno != EAGAIN && errno != EINTR) {
                         ALOGW("could not get event (errno=%d)", errno);
                     }
                 } else if ((readSize % sizeof(struct input_event)) != 0) {
+    ALOGI("===> traceKey D6-1c, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     ALOGE("could not get event (wrong size: %d)", readSize);
                 } else {
                     int32_t deviceId = device->id == mBuiltInKeyboardId ? 0 : device->id;
 
                     size_t count = size_t(readSize) / sizeof(struct input_event);
+    ALOGI("===> traceKey D6-1d 0, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
+                    property_set("sys.vasott.key_check","1");
+
                     for (size_t i = 0; i < count; i++) {
                         struct input_event& iev = readBuffer[i];
                         event->when = processEventTimestamp(iev);
@@ -1634,6 +1644,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                         capacity -= 1;
                     }
                     if (capacity == 0) {
+    ALOGI("===> traceKey D6-1d 5, buffer full, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                         // The result buffer is full.  Reset the pending event index
                         // so we will try to read the device again on the next iteration.
                         mPendingEventIndex -= 1;
@@ -1641,16 +1652,19 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                     }
                 }
             } else if (eventItem.events & EPOLLHUP) {
+    ALOGI("===> traceKey D6-2, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 ALOGI("Removing device %s due to epoll hang-up event.",
                       device->identifier.name.c_str());
                 deviceChanged = true;
                 closeDeviceLocked(*device);
             } else {
+    ALOGI("===> traceKey D6-3, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 ALOGW("Received unexpected epoll event 0x%08x for device %s.", eventItem.events,
                       device->identifier.name.c_str());
             }
         }
 
+    ALOGI("===> traceKey D5, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         // readNotify() will modify the list of devices so this must be done after
         // processing all other events to ensure that we read all remaining events
         // before closing the devices.
diff --git a/services/inputflinger/reader/InputReader.cpp b/services/inputflinger/reader/InputReader.cpp
index 10c04f606c..74c7963b84 100644
--- a/services/inputflinger/reader/InputReader.cpp
+++ b/services/inputflinger/reader/InputReader.cpp
@@ -34,6 +34,8 @@
 
 #include "InputDevice.h"
 
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
 using android::base::StringPrintf;
 
 namespace android {
@@ -112,6 +114,7 @@ void InputReader::loopOnce() {
         mReaderIsAliveCondition.notify_all();
 
         if (count) {
+    ALOGI("===> traceKey C3 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processEventsLocked(mEventBuffer, count);
         }
 
@@ -144,6 +147,7 @@ void InputReader::loopOnce() {
     // resulting in a deadlock.  This situation is actually quite plausible because the
     // listener is actually the input dispatcher, which calls into the window manager,
     // which occasionally calls into the input reader.
+    ALOGI("===> traceKey C0 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     mQueuedListener->flush();
 }
 
@@ -163,6 +167,7 @@ void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) {
 #if DEBUG_RAW_EVENTS
             ALOGD("BatchSize: %zu Count: %zu", batchSize, count);
 #endif
+    ALOGI("===> traceKey C2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processEventsForDeviceLocked(deviceId, rawEvent, batchSize);
         } else {
             switch (rawEvent->type) {
@@ -298,15 +303,18 @@ void InputReader::processEventsForDeviceLocked(int32_t eventHubId, const RawEven
     auto deviceIt = mDevices.find(eventHubId);
     if (deviceIt == mDevices.end()) {
         ALOGW("Discarding event for unknown eventHubId %d.", eventHubId);
+    BLOGI("===> traceKey C1.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
     std::shared_ptr<InputDevice>& device = deviceIt->second;
     if (device->isIgnored()) {
         // ALOGD("Discarding event for ignored deviceId %d.", deviceId);
+    BLOGI("===> traceKey C1.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
+    ALOGI("===> traceKey C1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     device->process(rawEvents, count);
 }
 
-- 
2.25.1

0001-Add-debug-message-for-missing-OK-key-3-3.patch (762 bytes)   
From d5ebda54bd62526c6c2c0a4c2d50eb7df489f325 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 09:59:31 +0800
Subject: [PATCH] Add debug message for missing OK key (3/3)

---
 prebuilts/etc/init/vasott_script_sh.rc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/prebuilts/etc/init/vasott_script_sh.rc b/prebuilts/etc/init/vasott_script_sh.rc
index db45a5d..637a80b 100644
--- a/prebuilts/etc/init/vasott_script_sh.rc
+++ b/prebuilts/etc/init/vasott_script_sh.rc
@@ -7,6 +7,7 @@ service vasott_script /system/bin/vasott_script.sh
 
 on property:sys.boot_completed=1
     start vasott_script
+    setprop sys.vasott.key_check 0
 
 on property:vendor.vasott.cecotpcheck=1
     setprop vendor.vasott.cecotp 1
-- 
2.25.1

(SW) Bcan Yeh

2024-08-23 15:46

developer   ~0016559

Hi YK,

    Please ignore the patch above. Use new patch files here.
    1. traceKey logs are reduced
    2. About "OK_count"
        a. use property "sys.vasott.key_check" for recording
        b. set key_check 1 while detecting OK key in EventHub.java
        c. key_check-- while detecting OK key in PhoneWindowManager.java
        d. Normally, "===> traceKey A1, OK key detected, update key_check_val=0" will appear twice(keyDown and keyUp) for OK key
        e. if it shows "===> traceKey A1, OK key detected, update key_check_val=-1", it means users press OK key quickly.
        f. if it shows "===> traceKey A1, OK key detected, update key_check_val=1", it means an OK key event is missed.
        g. The "OK_count" method may not work and always shows "key_check_val=0" and "key_check_val=-1" if the root cause located before the point "set key_check 1" in EventHub.java
update_0001-Add-debug-message-for-missing-OK-key-1-3.patch (1,618 bytes)   
From 245c73b49e3c8e0d80440d28c6dded971a72205b Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 14:29:03 +0800
Subject: [PATCH] Add debug message for missing OK key (1/3)

---
 .../android/server/policy/PhoneWindowManager.java  | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 5015954083c1..1e58d7944c63 100755
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2837,6 +2837,20 @@ public class PhoneWindowManager implements WindowManagerPolicy {
 					+ " mDeviceId=" + event.getDeviceId() + " mSource=" + event.getSource() + " mScanCode="	+ event.getScanCode() + " mCharacters=" + event.getCharacters());
         }
 
+        if(event.getScanCode()==232){
+            String key_check = SystemProperties.get("sys.vasott.key_check");
+            int key_check_val = 0;
+            try{
+                key_check_val = Integer.parseInt(key_check);
+            } catch(NumberFormatException e){
+                e.printStackTrace();
+                key_check_val = 0;
+            }
+            key_check_val = key_check_val-1;
+            Log.i(TAG,"===> traceKey A1, OK key detected, update key_check_val="+key_check_val);
+            SystemProperties.set("sys.vasott.key_check", String.valueOf(key_check_val));
+        }
+
 		//SPTEK.MW : lastinput key property setting
 		if(down)
 		{
-- 
2.25.1

update_0001-Add-debug-message-for-missing-OK-key-2-3.patch (6,966 bytes)   
From 7503edf2f824ee99ec26f0b94eb5053627a2bed0 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 14:41:27 +0800
Subject: [PATCH] Add debug message for missing OK key (2/3)

---
 services/inputflinger/reader/EventHub.cpp    | 17 +++++++++++++++++
 services/inputflinger/reader/InputReader.cpp |  8 ++++++++
 2 files changed, 25 insertions(+)

diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
index b19b4195d1..d9e514ef15 100644
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -1601,29 +1601,43 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                 }
                 continue;
             }
+
+    ALOGI("===> traceKey D6, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             // This must be an input event
             if (eventItem.events & EPOLLIN) {
                 int32_t readSize =
                         read(device->fd, readBuffer, sizeof(struct input_event) * capacity);
+    ALOGI("===> traceKey D6-1, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
                     // Device was removed before INotify noticed.
                     ALOGW("could not get event, removed? (fd: %d size: %" PRId32
                           " bufferSize: %zu capacity: %zu errno: %d)\n",
                           device->fd, readSize, bufferSize, capacity, errno);
+    ALOGI("===> traceKey D6-1a, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     deviceChanged = true;
                     closeDeviceLocked(*device);
                 } else if (readSize < 0) {
+    ALOGI("===> traceKey D6-1b, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     if (errno != EAGAIN && errno != EINTR) {
                         ALOGW("could not get event (errno=%d)", errno);
                     }
                 } else if ((readSize % sizeof(struct input_event)) != 0) {
+    ALOGI("===> traceKey D6-1c, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     ALOGE("could not get event (wrong size: %d)", readSize);
                 } else {
                     int32_t deviceId = device->id == mBuiltInKeyboardId ? 0 : device->id;
 
                     size_t count = size_t(readSize) / sizeof(struct input_event);
+    ALOGI("===> traceKey D6-1d 0, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
+
                     for (size_t i = 0; i < count; i++) {
                         struct input_event& iev = readBuffer[i];
+    ALOGI("===> traceKey D6-1d 1, code=%d, in getEvents, in %s of %s line %d" ,iev.code,__func__ ,__FILE__ ,__LINE__);
+                        if(iev.code==232) {
+    ALOGI("===> traceKey D6-1d 2, OK key detected, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
+                            property_set("sys.vasott.key_check","1");
+                        }
+
                         event->when = processEventTimestamp(iev);
                         event->readTime = systemTime(SYSTEM_TIME_MONOTONIC);
                         event->deviceId = deviceId;
@@ -1634,6 +1648,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                         capacity -= 1;
                     }
                     if (capacity == 0) {
+    ALOGI("===> traceKey D6-1d 5, buffer full, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                         // The result buffer is full.  Reset the pending event index
                         // so we will try to read the device again on the next iteration.
                         mPendingEventIndex -= 1;
@@ -1641,11 +1656,13 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                     }
                 }
             } else if (eventItem.events & EPOLLHUP) {
+    ALOGI("===> traceKey D6-2, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 ALOGI("Removing device %s due to epoll hang-up event.",
                       device->identifier.name.c_str());
                 deviceChanged = true;
                 closeDeviceLocked(*device);
             } else {
+    ALOGI("===> traceKey D6-3, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 ALOGW("Received unexpected epoll event 0x%08x for device %s.", eventItem.events,
                       device->identifier.name.c_str());
             }
diff --git a/services/inputflinger/reader/InputReader.cpp b/services/inputflinger/reader/InputReader.cpp
index 10c04f606c..74c7963b84 100644
--- a/services/inputflinger/reader/InputReader.cpp
+++ b/services/inputflinger/reader/InputReader.cpp
@@ -34,6 +34,8 @@
 
 #include "InputDevice.h"
 
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
 using android::base::StringPrintf;
 
 namespace android {
@@ -112,6 +114,7 @@ void InputReader::loopOnce() {
         mReaderIsAliveCondition.notify_all();
 
         if (count) {
+    ALOGI("===> traceKey C3 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processEventsLocked(mEventBuffer, count);
         }
 
@@ -144,6 +147,7 @@ void InputReader::loopOnce() {
     // resulting in a deadlock.  This situation is actually quite plausible because the
     // listener is actually the input dispatcher, which calls into the window manager,
     // which occasionally calls into the input reader.
+    ALOGI("===> traceKey C0 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     mQueuedListener->flush();
 }
 
@@ -163,6 +167,7 @@ void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) {
 #if DEBUG_RAW_EVENTS
             ALOGD("BatchSize: %zu Count: %zu", batchSize, count);
 #endif
+    ALOGI("===> traceKey C2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processEventsForDeviceLocked(deviceId, rawEvent, batchSize);
         } else {
             switch (rawEvent->type) {
@@ -298,15 +303,18 @@ void InputReader::processEventsForDeviceLocked(int32_t eventHubId, const RawEven
     auto deviceIt = mDevices.find(eventHubId);
     if (deviceIt == mDevices.end()) {
         ALOGW("Discarding event for unknown eventHubId %d.", eventHubId);
+    BLOGI("===> traceKey C1.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
     std::shared_ptr<InputDevice>& device = deviceIt->second;
     if (device->isIgnored()) {
         // ALOGD("Discarding event for ignored deviceId %d.", deviceId);
+    BLOGI("===> traceKey C1.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
+    ALOGI("===> traceKey C1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     device->process(rawEvents, count);
 }
 
-- 
2.25.1

update_0001-Add-debug-message-for-missing-OK-key-3-3.patch (762 bytes)   
From d5ebda54bd62526c6c2c0a4c2d50eb7df489f325 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 09:59:31 +0800
Subject: [PATCH] Add debug message for missing OK key (3/3)

---
 prebuilts/etc/init/vasott_script_sh.rc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/prebuilts/etc/init/vasott_script_sh.rc b/prebuilts/etc/init/vasott_script_sh.rc
index db45a5d..637a80b 100644
--- a/prebuilts/etc/init/vasott_script_sh.rc
+++ b/prebuilts/etc/init/vasott_script_sh.rc
@@ -7,6 +7,7 @@ service vasott_script /system/bin/vasott_script.sh
 
 on property:sys.boot_completed=1
     start vasott_script
+    setprop sys.vasott.key_check 0
 
 on property:vendor.vasott.cecotpcheck=1
     setprop vendor.vasott.cecotp 1
-- 
2.25.1

(ALTech) Younkwang Jung

2024-08-26 08:00

developer   ~0016560

Hi Bcan

Thank you , we will review the patch and proceed with the stability test if there is no problem.
and I will update you on the 1st feedback before 8/30 ( this week ).

Thank you
YK.Jung

(ALTech) Younkwang Jung

2024-08-28 08:51

developer   ~0016588

Hi Bcan

I tested your patch..
but strange patter has been observed, so please check it
===================================================================================================================
08-28 04:57:50.800 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0
08-28 04:58:03.531 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0
08-28 04:58:03.917 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-1
08-28 04:58:03.967 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-2
08-28 04:58:04.021 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-3
08-28 04:58:04.068 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-4
08-28 04:58:04.120 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-5
08-28 04:58:04.169 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-6
08-28 04:58:04.224 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-7
08-28 04:58:04.237 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-8
====================================================================================================================

Thank you
YK.Jung
BFX-AT100_20240827-095153.zip (17,856,948 bytes)

(SW) Bcan Yeh

2024-09-02 10:42

developer   ~0016621

Hi YK,

    That is caused by "Long Press". Please ignore it.

(ALTech) Younkwang Jung

2024-09-09 11:03

developer   ~0016686

Hi Bacn

Using the attached Monkey test script, EventHub events are being observed.
The test script is frequently entered for the OK button.
Therefore, if the OK button is not input for a certain period of time, we can check it.

In a test script, the following values may need to be changed depending on the environment of the STB
# BT
input_device=event6
After rcu pairing, the test was done

This is the result of proceeding with the test script.

1) Please check the key_check_val value , It's not a long press key action (logcat.log.0062.zip)
09-08 14:17:18.769 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0
09-08 14:17:19.404 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-5 (?)
09-08 14:17:19.454 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-6 (?)
09-08 14:17:19.484 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0
...
09-08 14:17:46.113 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0
09-08 14:17:49.300 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0
09-08 14:17:49.680 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-1
09-08 14:17:49.729 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-2
09-08 14:17:49.921 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-3
09-08 14:17:49.966 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-4
09-08 14:17:50.020 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-5
09-08 14:17:50.171 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-8 (?)
09-08 14:17:50.178 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0
09-08 14:17:53.827 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0
09-08 14:17:54.203 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-1
09-08 14:17:54.248 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-2
09-08 14:17:54.300 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-3
09-08 14:17:54.562 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-4 (?)
09-08 14:17:55.077 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0
09-08 14:17:58.647 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0


2) Please check the log on 09-08 15:52:09.524. logcat.log.0048.zip
09-08 15:51:57.937 I 3737 3897 InputReader: ===> traceKey C1 in processEventsForDeviceLocked of frameworks/native/services/inputflinger/reader/InputReader.cpp line 317
09-08 15:51:57.937 I 3737 3897 InputReader: ===> traceKey C0 in loopOnce of frameworks/native/services/inputflinger/reader/InputReader.cpp line 150
09-08 15:52:09.524 I 3737 3897 InputReader: ===> traceKey C0 in loopOnce of frameworks/native/services/inputflinger/reader/InputReader.cpp line 150 <== (?)
09-08 15:52:10.329 I 3737 3897 EventHub: ===> traceKey D6, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1605
09-08 15:52:10.329 I 3737 3897 EventHub: ===> traceKey D6-1, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1610

3) Key events have not occurred for more than 10 seconds. logcat.log.0329.zip */
09-07 08:19:51.217 I 3737 3897 EventHub: New device: id=60, fd=176, path=/dev/input/event6, name=BRM_BA02_003, classes=KEYBOARD | DPAD | GAMEPAD | MIC | EXTERNAL, configuration=/vendor/usr/idc/Vendor_005d_Product_0002.idc, keyLayout=/vendor/usr/keylayout/Vendor_005d_Product_0002.kl, keyCharacterMap=/system/usr/keychars/Generic.kcm, builtinKeyboard=false,
09-07 08:19:51.217 I 3737 3897 InputReader: ===> traceKey C3 in loopOnce of frameworks/native/services/inputflinger/reader/InputReader.cpp line 117

4) The following statistics are the three-day logvel.
   Of course, there seems to be a percentage of debug logs, even though there are a lot of RCU actions. is there a way to reduce it a little more?
   4.22 + 3.09 = 7.31 (nearly the best ratio log is being observed)

[Log Level Counts (Descending Order): total_count = 41275838
  NAVIGATOR_DSMCC: 3014994 (7.30%)
  EventHub: 1741719 (4.22%) ( <== trace key log )
  HomeFragment: 1579704 (3.83%)
  FragmentControl: 1556974 (3.77%)
  LiveTvMiniEpgFragment: 1474244 (3.57%)
  DockMenuManager: 1281818 (3.11%)
  InputReader: 1276978 (3.09%) ( <== trace key log )
  BTV_IMEService: 1242089 (3.01%)
  WindowManager: 1120448 (2.71%) ( <== some trace key log )
  UIControlManager: 996662 (2.41%)
  STBGlobal: 996425 (2.41%)
  LivePlayer_0: 954690 (2.31%)
  VcsHomeModel: 824369 (2.00%)
  PropertyService: 804153 (1.95%)
  MainActivity: 787583 (1.91%)
  VcsHomePlayerControl: 735166 (1.78%)
  MiniAmVideoDec_0: 647902 (1.57%)
  ReceiveInterfaceManager: 600748 (1.46%)
  MiniAmFFmpegExtractor_0: 593863 (1.44%)
  LivePlayerClock_0: 587254 (1.42%)
  BtvMediaPlayer: 579634 (1.40%)
  PlayerManager: 566442 (1.37%)
  AmlHalPlayerImpl_0: 524867 (1.27%)
  HalAudioOutput_0: 519709 (1.26%)
  AmCodecVDA: 516821 (1.25%)
  AnypointAD: 500541 (1.21%)
  memtrack_aml: 480944 (1.17%)
  OmxComponent: 479896 (1.16%)

Please check it
Thank you
YK.Jung
logcat.log.0048.zip (2,944,916 bytes)
logcat.log.0062.zip (3,134,694 bytes)
logcat.log.0329.zip (3,406,813 bytes)

(SW) Bcan Yeh

2024-09-12 21:19

developer   ~0016705

Hi YK,

1) Please check the key_check_val value , It's not a long press key action (logcat.log.0062.zip)

  1.The negative value is caused by the sleep between sendevent.

    sendevent /dev/input/$input_device 1 232 1
    sendevent /dev/input/$input_device 0 0 0 ------> keydown event
    sleep $key_delay_1 ------> sleep may cause repeated events
    sendevent /dev/input/$input_device 1 232 0
    sendevent /dev/input/$input_device 0 0 0 ------> keyup event

        You can try this by sending keydown commands first.
    And you will see a lot of negative key_check values until sending keyup event.
    
    
  2. The discontinuous negative values might be caused by insufficient ring buffer of logcat.
      Use "logcat -g", you can check the buffer size and consumed size.
      If consumed size is close to ring buffer size, some logs might be lost due to insufficient buffer size at that time.

2) Please check the log on 09-08 15:52:09.524. logcat.log.0048.zip

  => "traceKey C0" will appear without any key event. This message will be removed.
  
3) Key events have not occurred for more than 10 seconds. logcat.log.0329.zip */
  
  => According to the log below, no key event occurred due to device removing and adding. (08:19:35-08:19:51)
--------------------------------------------------
  09-07 08:19:35.029 3737 3897 I EventHub: ===> traceKey D6, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1605
  09-07 08:19:35.029 3737 3897 I EventHub: ===> traceKey D6-2, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1659
  09-07 08:19:35.034 3737 3897 I EventHub: Removing device BRM_BA02_003 due to epoll hang-up event.
  09-07 08:19:35.034 3737 3897 I EventHub: Removed device: path=/dev/input/event6 name=BRM_BA02_003 id=59 fd=176 classes=KEYBOARD | DPAD | GAMEPAD | MIC | EXTERNAL
  09-07 08:19:35.073 3737 3897 I EventHub: Removing device '/dev/input/event6' due to inotify event
  09-07 08:19:51.217 3737 3897 I EventHub: usingClockIoctl=true
  09-07 08:19:51.217 3737 3897 I EventHub: New device: id=60, fd=176, path='/dev/input/event6', name='BRM_BA02_003', classes=KEYBOARD | DPAD | GAMEPAD | MIC | EXTERNAL, configuration='/vendor/usr/idc/Vendor_005d_Product_0002.idc', keyLayout='/vendor/usr/keylayout/Vendor_005d_Product_0002.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false,
  09-07 08:19:51.244 3737 3897 I EventHub: ===> traceKey D6, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1605
--------------------------------------------------

4) The following statistics are the three-day logvel.
  => I will remove some messages in next patches.

(ALTech) Younkwang Jung

2024-09-13 08:07

developer   ~0016706

Hi Bcan

Thank you for your analysis.
It's currently under internal testing, but it's not reproducing. It's still trying.

And the same issue was observed on STB (OS12), which does not include the log you added.
SKB manager reported it and I checked it. I don't see any clue.
Please look at the log to see if there are any clues.

Thank you
YK.jung

(SW) Bcan Yeh

2024-09-13 15:24

developer   ~0016723

Hi YK,

The patches are updated. Please check the attached files.

1. Reduce log messages. ("traceKey A1"/"traceKey C0" are removed)

2. For key_check, please find the message.
   "===> traceKey D6-1d 2, OK key detected, old_key_check=0, key_check=0"

   The value of key_check decreases starting from 0.
   key_check=0 --> normal, no long press happened
   key_check=-1
   key_check=-2
   key_check=-3
   key_check=-4 --> long press happened
   key_check=-4 --> normal, no new long press happened
   key_check=-4 --> normal, no new long press happened
   key_check=-3 --> If key_check increased, it will print "===> traceKey D6-1d 3, There might be a issue happened!".
   This could be one of the following two cases.
   a. Recoverable increaing
         It's caused by pressing intensively and quickly. And key_check will decrease to -4 afterward.
         ps. key_check could also be -4, -3, -2, -1, -2, -3, -4.
   b. Unrecoverable increaing
         It ought to be the case we are finding. OK key is missing.
         Please provide log for analysis.

(SW) Bcan Yeh

2024-09-13 15:25

developer   ~0016724

0001-Add-debug-message-for-missing-OK-key-1-3_20240913.patch (1,707 bytes)   
From a65a88722bb25889749df337ee0814345fb28557 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 13 Sep 2024 14:20:38 +0800
Subject: [PATCH] Add debug message for missing OK key (1/3)

---
 .../android/server/policy/PhoneWindowManager.java | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 5015954083c1..240891eef734 100755
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2837,6 +2837,21 @@ public class PhoneWindowManager implements WindowManagerPolicy {
 					+ " mDeviceId=" + event.getDeviceId() + " mSource=" + event.getSource() + " mScanCode="	+ event.getScanCode() + " mCharacters=" + event.getCharacters());
         }
 
+        if(event.getScanCode()==232){
+            String key_check = SystemProperties.get("sys.vasott.key_check");
+            //Log.i(TAG,"===> traceKey A1a, OK key detected, key_check="+key_check);
+            int key_check_val = 0;
+            try{
+                key_check_val = Integer.parseInt(key_check);
+            } catch(NumberFormatException e){
+                e.printStackTrace();
+                key_check_val = 0;
+            }
+            key_check_val = key_check_val-1;
+            SystemProperties.set("sys.vasott.key_check", String.valueOf(key_check_val));
+            //Log.i(TAG,"===> traceKey A1b, OK key detected, update key_check_val="+key_check_val);
+        }
+
 		//SPTEK.MW : lastinput key property setting
 		if(down)
 		{
-- 
2.25.1

0001-Add-debug-message-for-missing-OK-key-2-3_20240913.patch (8,562 bytes)   
From 3c2233535259194304d9526603aa960b57ad7592 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 13 Sep 2024 14:21:26 +0800
Subject: [PATCH] Add debug message for missing OK key (2/3)

---
 services/inputflinger/reader/EventHub.cpp     | 29 +++++++++++++++++++
 services/inputflinger/reader/InputReader.cpp  |  8 +++++
 .../inputflinger/reader/include/EventHub.h    |  3 ++
 3 files changed, 40 insertions(+)

diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
index b19b4195d1..7ed2af598b 100644
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -1547,6 +1547,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
 
         // Grab the next input event.
         bool deviceChanged = false;
+        int32_t key_check = -1;
         while (mPendingEventIndex < mPendingEventCount) {
             const struct epoll_event& eventItem = mPendingEventItems[mPendingEventIndex++];
             if (eventItem.data.fd == mINotifyFd) {
@@ -1601,29 +1602,54 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                 }
                 continue;
             }
+
+    ALOGI("===> traceKey D6, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             // This must be an input event
             if (eventItem.events & EPOLLIN) {
                 int32_t readSize =
                         read(device->fd, readBuffer, sizeof(struct input_event) * capacity);
+    ALOGI("===> traceKey D6-1, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
                     // Device was removed before INotify noticed.
                     ALOGW("could not get event, removed? (fd: %d size: %" PRId32
                           " bufferSize: %zu capacity: %zu errno: %d)\n",
                           device->fd, readSize, bufferSize, capacity, errno);
+    ALOGI("===> traceKey D6-1a, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     deviceChanged = true;
                     closeDeviceLocked(*device);
                 } else if (readSize < 0) {
+    ALOGI("===> traceKey D6-1b, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     if (errno != EAGAIN && errno != EINTR) {
                         ALOGW("could not get event (errno=%d)", errno);
                     }
                 } else if ((readSize % sizeof(struct input_event)) != 0) {
+    ALOGI("===> traceKey D6-1c, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                     ALOGE("could not get event (wrong size: %d)", readSize);
                 } else {
                     int32_t deviceId = device->id == mBuiltInKeyboardId ? 0 : device->id;
 
                     size_t count = size_t(readSize) / sizeof(struct input_event);
+    ALOGI("===> traceKey D6-1d 0, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
+
                     for (size_t i = 0; i < count; i++) {
                         struct input_event& iev = readBuffer[i];
+    ALOGI("===> traceKey D6-1d 1, code=%d, in getEvents, in %s of %s line %d" ,iev.code,__func__ ,__FILE__ ,__LINE__);
+                        if(iev.code==232) {
+                            char tmps[11]={0};
+                            key_check = property_get_int32("sys.vasott.key_check", 0);
+    ALOGI("===> traceKey D6-1d 2, OK key detected, old_key_check=%d, key_check=%d", old_key_check, key_check);
+                            if(old_key_check<key_check)
+                            {
+    ALOGI("===> traceKey D6-1d 3, There might be a issue happened!");
+                            }
+                            old_key_check=key_check;
+    //ALOGI("===> traceKey D6-1d 4, OK key detected, old_key_check=%d, key_check=%d", old_key_check, key_check);
+                            key_check++;
+                            sprintf(tmps,"%d",key_check);
+    //ALOGI("===> traceKey D6-1d 4a, OK key detected, key_check=%s", tmps);
+                            property_set("sys.vasott.key_check",tmps);
+                        }
+
                         event->when = processEventTimestamp(iev);
                         event->readTime = systemTime(SYSTEM_TIME_MONOTONIC);
                         event->deviceId = deviceId;
@@ -1634,6 +1660,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                         capacity -= 1;
                     }
                     if (capacity == 0) {
+    ALOGI("===> traceKey D6-1d 5, buffer full, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                         // The result buffer is full.  Reset the pending event index
                         // so we will try to read the device again on the next iteration.
                         mPendingEventIndex -= 1;
@@ -1641,11 +1668,13 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
                     }
                 }
             } else if (eventItem.events & EPOLLHUP) {
+    ALOGI("===> traceKey D6-2, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 ALOGI("Removing device %s due to epoll hang-up event.",
                       device->identifier.name.c_str());
                 deviceChanged = true;
                 closeDeviceLocked(*device);
             } else {
+    ALOGI("===> traceKey D6-3, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
                 ALOGW("Received unexpected epoll event 0x%08x for device %s.", eventItem.events,
                       device->identifier.name.c_str());
             }
diff --git a/services/inputflinger/reader/InputReader.cpp b/services/inputflinger/reader/InputReader.cpp
index 10c04f606c..0b6bf7b476 100644
--- a/services/inputflinger/reader/InputReader.cpp
+++ b/services/inputflinger/reader/InputReader.cpp
@@ -34,6 +34,8 @@
 
 #include "InputDevice.h"
 
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
 using android::base::StringPrintf;
 
 namespace android {
@@ -112,6 +114,7 @@ void InputReader::loopOnce() {
         mReaderIsAliveCondition.notify_all();
 
         if (count) {
+    ALOGI("===> traceKey C3 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processEventsLocked(mEventBuffer, count);
         }
 
@@ -144,6 +147,7 @@ void InputReader::loopOnce() {
     // resulting in a deadlock.  This situation is actually quite plausible because the
     // listener is actually the input dispatcher, which calls into the window manager,
     // which occasionally calls into the input reader.
+    //ALOGI("===> traceKey C0 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     mQueuedListener->flush();
 }
 
@@ -163,6 +167,7 @@ void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) {
 #if DEBUG_RAW_EVENTS
             ALOGD("BatchSize: %zu Count: %zu", batchSize, count);
 #endif
+    ALOGI("===> traceKey C2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
             processEventsForDeviceLocked(deviceId, rawEvent, batchSize);
         } else {
             switch (rawEvent->type) {
@@ -298,15 +303,18 @@ void InputReader::processEventsForDeviceLocked(int32_t eventHubId, const RawEven
     auto deviceIt = mDevices.find(eventHubId);
     if (deviceIt == mDevices.end()) {
         ALOGW("Discarding event for unknown eventHubId %d.", eventHubId);
+    BLOGI("===> traceKey C1.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
     std::shared_ptr<InputDevice>& device = deviceIt->second;
     if (device->isIgnored()) {
         // ALOGD("Discarding event for ignored deviceId %d.", deviceId);
+    BLOGI("===> traceKey C1.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
         return;
     }
 
+    ALOGI("===> traceKey C1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
     device->process(rawEvents, count);
 }
 
diff --git a/services/inputflinger/reader/include/EventHub.h b/services/inputflinger/reader/include/EventHub.h
index 410a7063ea..bfd0c54d15 100644
--- a/services/inputflinger/reader/include/EventHub.h
+++ b/services/inputflinger/reader/include/EventHub.h
@@ -713,6 +713,9 @@ private:
     size_t mPendingEventCount;
     size_t mPendingEventIndex;
     bool mPendingINotify;
+
+
+    int32_t old_key_check=0;
 };
 
 }; // namespace android
-- 
2.25.1

0001-Add-debug-message-for-missing-OK-key-3-3_20240913.patch (762 bytes)   
From b20ccfa4e99bd436bb654e32abb5aa96ffa1e284 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 13 Sep 2024 14:23:26 +0800
Subject: [PATCH] Add debug message for missing OK key (3/3)

---
 prebuilts/etc/init/vasott_script_sh.rc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/prebuilts/etc/init/vasott_script_sh.rc b/prebuilts/etc/init/vasott_script_sh.rc
index db45a5d..637a80b 100644
--- a/prebuilts/etc/init/vasott_script_sh.rc
+++ b/prebuilts/etc/init/vasott_script_sh.rc
@@ -7,6 +7,7 @@ service vasott_script /system/bin/vasott_script.sh
 
 on property:sys.boot_completed=1
     start vasott_script
+    setprop sys.vasott.key_check 0
 
 on property:vendor.vasott.cecotpcheck=1
     setprop vendor.vasott.cecotp 1
-- 
2.25.1

(ALTech) Younkwang Jung

2024-09-17 16:27

developer   ~0016725

Hi Bcan

Please review this attached log.
After repairing, the OK button was operated.

Thank you
YK.Jung

(SW) Bcan Yeh

2024-09-18 09:32

developer   ~0016726

Hi YK,

Is there an "OK key not working" issue happened?
I didn't find any issue happened in the log.

(ALTech) Younkwang Jung

2024-09-19 09:13

developer   ~0016727

Hi Bcan

Until the time below, an issue was observed that the OK button did not work.
..
.. -- OK key not working --
..
[09-17 17:07:51.244] atvr_remove: hdev->name = BRM_BA01_0E8 removed, num 1->0
..
.. -- OK key working --
..
But when I checked the logfile, there was no log in logcat.
Perhaps the log was collected in a missing state.

we need to test it again.

Thank you
YK.Jung

(ALTech) JunGyu Kim

2024-10-24 12:18

developer   ~0016889

Last edited: 2024-10-24 13:08

Hi Bcan,

Please commit the #c16724 to BFX-AT100_5.4.3 branch until Korea time 4 PM.
FW build is scheduled and this modification must be include.

Please use BPM-37834 prefix when commit it.

Thank you.
Kim

(SW) Kinbay Wu

2024-10-24 14:44

developer   ~0016890

Hi JunGyu

Push done.
Please check it.

BR,
Kinbay

(ALTech) JunGyu Kim

2025-02-10 10:41

developer   ~0017308

Hi Bcan, Kinbay.

The "OK key is not working" issue is still reproduce on field, and SKB shared the log file when the issue is occurring after applying new debug patch.

// Kernel log
dmesg.txt:3377:[02-08 20:58:08.525] key down 2
dmesg.txt:3383:[02-08 20:58:09.335] key down 6
dmesg.txt:3532:[02-08 20:58:18.987] key down 232
dmesg.txt:3536:[02-08 20:58:20.123] key down 232
dmesg.txt:3540:[02-08 20:58:22.834] key down 232
dmesg.txt:3546:[02-08 20:58:23.735] key down 108
dmesg.txt:3550:[02-08 20:58:26.007] key down 103


// logcat
main.log.1:1764:02-08 20:58:09.503 3779 3891 I WindowManager: interceptKeyTq keycode=8 interactive=true isWakeKey=false, sys.power.sleep_reason=
main.log.1:1772:02-08 20:58:09.511 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 8, name : 8
main.log.1:1851:02-08 20:58:09.661 3779 3891 I WindowManager: interceptKeyTq keycode=8 interactive=true isWakeKey=false, sys.power.sleep_reason=
main.log.1:1860:02-08 20:58:09.670 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 8, name : 8
main.log.1:1905:02-08 20:58:10.312 3779 3891 I WindowManager: interceptKeyTq keycode=12 interactive=true isWakeKey=false, sys.power.sleep_reason=
main.log.1:1917:02-08 20:58:10.316 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 12, name : 12
main.log.1:1981:02-08 20:58:10.514 3779 3891 I WindowManager: interceptKeyTq keycode=12 interactive=true isWakeKey=false, sys.power.sleep_reason=
main.log.1:1990:02-08 20:58:10.518 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 12, name : 12
main.log.1:3960:02-08 20:58:24.712 3779 3891 I WindowManager: interceptKeyTq keycode=20 interactive=true isWakeKey=false, sys.power.sleep_reason=
main.log.1:3968:02-08 20:58:24.717 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 20, name : 20
main.log.1:4122:02-08 20:58:24.914 3779 3891 I WindowManager: interceptKeyTq keycode=20 interactive=true isWakeKey=false, sys.power.sleep_reason=
main.log.1:4128:02-08 20:58:24.918 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 20, name : 20
main.log.1:4207:02-08 20:58:26.984 3779 3891 I WindowManager: interceptKeyTq keycode=19 interactive=true isWakeKey=false, sys.power.sleep_reason=
main.log.1:4215:02-08 20:58:26.990 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 19, name : 19

Please check the attached log file.

Thank you.
Kim

(SW) Bcan Yeh

2025-02-12 16:00

developer   ~0017319

Hi JunGyu,

  After analyzing the log, there are some conclusions listed below.
  1. The root cause is outside the scope of our debug messages.
  2. Because of (1), the key_check mechanism is useless.
  3. The new debug scope should cover from the first line of EventHub::getEvents() to the line with message "===> traceKey D6, in getEvents".

(ALTech) JunGyu Kim

2025-02-12 18:41

developer   ~0017321

Hi Bcan,

Thank you for analysis.
Please prepare additional logs for debugging.
After discussing with SKB, we will decide whether to add additional debugging logs.

BTW, there are traces of the user entering the screensaver.
[sys.current.top.package]: [com.google.android.backdrop]

Please also review if it is related to this symptom.
Thank you.
KIm

(ALTech) JunGyu Kim

2025-02-14 16:22

developer   ~0017333

Hi Bcan,

I have a question about key layout file.
I can find the DPAD_CENTER is mapped duplicated on several key layout file as below.

// vendor/foxconn/keyboards
Vendor_005d_Product_0004.kl:40:key 232 DPAD_CENTER
Vendor_005d_Product_0004.kl:41:key 352 DPAD_CENTER
Vendor_005d_Product_0005.kl:40:key 232 DPAD_CENTER
Vendor_005d_Product_0005.kl:41:key 352 DPAD_CENTER
...

Is it okay if there were duplicate mappings like this?
Please also check it.

Thank you.
Kim

(ALTech) JunGyu Kim

2025-03-10 13:18

developer   ~0017369

Hi Bcan,

Could you please update the progress of this issue?

Thank you.
Kim

(ALTech) SY Yoon

2025-03-10 13:54

developer   ~0017370

@JunGyu KIM,
FII already changed their engineer to Mr. Willin Deng,

@Willin Deng,
Could you follow up this issue ?
This issue opened Nov. 2024. This issue is pending more than 3 month.
If you cannot support it, then please consider to provide source code about this issue ASAP.

Best Regards,
SuhYoung YOON

(PM) Sheila Tu

2025-03-10 14:32

developer   ~0017371

Hi Mr. Yoon,

The source code is in Android Framework, and ALT shall have it already.
May I know what the additional source code that ALT is asking for?

(ALTech) JunGyu Kim

2025-03-10 16:41

developer   ~0017372

Hi Sheila Tu,

1. DPAD_CENTER is defined twice in the keylayout file. It is necessary to check whether this affects this issue.
2. Currently, the FXN module (hid-skbrm.ko) log is output in the log when the issue occurs, but no log is output after that.
Therefore, the log from the FXN module (hid-skbrm.ko) to the Android Framework needs to be checked, but only the Android Framework code has been modified so far.
It seems necessary to review whether additional logs are needed in hid-skbrm.ko.

Thank you.
Kim

(PM) Sheila Tu

2025-03-10 17:07

developer   ~0017373

Hi Mr. Kim,

hid-skbrm.ko is listed among the required source codes from ALT.
We are currently working with the ALT business team on the discussion. Once we reach a conclusion with them, we will release the requested source code.

Issue History

Date Modified Username Field Change
2022-11-29 19:00 (ALTech) Younkwang Jung New Issue
2022-11-29 19:00 (ALTech) Younkwang Jung File Added: 0130000101_20221129_38_D5_7A_DB_21_42.zip
2022-11-29 19:00 (ALTech) Younkwang Jung File Added: rcu_ok_missing.PNG
2022-11-29 19:00 (ALTech) Younkwang Jung Assigned To => (ALTech) Younkwang Jung
2022-11-29 19:00 (ALTech) Younkwang Jung Status new => assigned
2022-11-29 19:00 (ALTech) Younkwang Jung Assigned To (ALTech) Younkwang Jung => (SW) Kerwin Chen
2022-11-29 19:01 (ALTech) Younkwang Jung Issue Monitored: (ALTech) SY Yoon
2022-11-29 19:01 (ALTech) Younkwang Jung Issue Monitored: (ALTech) JunGyu Kim
2022-11-30 09:03 (ALTech) Younkwang Jung Note Added: 0011336
2022-11-30 09:03 (ALTech) Younkwang Jung File Added: 0130000101_20221129_28_CD_C4_FB_A7_EF.zip
2022-11-30 10:58 (SW) Kerwin Chen Note Added: 0011341
2022-11-30 11:20 (ALTech) Younkwang Jung Note Added: 0011343
2022-11-30 14:50 (ALTech) Younkwang Jung Note Added: 0011350
2022-11-30 17:40 (SW) Kerwin Chen Note Added: 0011353
2022-11-30 17:41 (SW) Kerwin Chen Note Edited: 0011353
2022-11-30 17:44 (SW) Kerwin Chen Note Edited: 0011353
2022-11-30 18:34 (ALTech) Younkwang Jung Note Added: 0011354
2022-11-30 18:34 (ALTech) Younkwang Jung File Added: 20221125_BFX-AT100_Log (2).zip
2022-12-01 08:27 (ALTech) Younkwang Jung Note Added: 0011357
2022-12-01 14:04 (SW) Kerwin Chen Note Added: 0011360
2022-12-01 14:05 (SW) Kerwin Chen Note Edited: 0011360
2022-12-01 17:35 (ALTech) Younkwang Jung Note Added: 0011361
2022-12-02 10:50 (ALTech) Younkwang Jung Note Added: 0011366
2022-12-02 14:33 (SW) Kerwin Chen Note Added: 0011368
2022-12-02 15:13 (ALTech) Younkwang Jung Note Added: 0011372
2022-12-02 15:20 (ALTech) Younkwang Jung Note Edited: 0011372 View Revisions
2022-12-05 08:33 (ALTech) Younkwang Jung Note Added: 0011377
2022-12-05 09:03 (ALTech) Younkwang Jung Note Added: 0011384
2022-12-05 09:03 (ALTech) Younkwang Jung File Added: ME0035_20221205_ec_5c_68_1d_bc_f9.zip
2022-12-05 09:50 (SW) Kerwin Chen Note Added: 0011387
2022-12-05 10:19 (ALTech) Younkwang Jung Note Added: 0011388
2022-12-05 10:30 (SW) Kerwin Chen Note Added: 0011389
2022-12-08 13:06 (ALTech) Younkwang Jung Note Added: 0011431
2022-12-08 13:06 (ALTech) Younkwang Jung File Added: kernel.log
2022-12-08 13:12 (ALTech) Younkwang Jung Note Added: 0011432
2022-12-12 09:44 (ALTech) Younkwang Jung Note Added: 0011455
2022-12-12 11:01 (SW) Kerwin Chen Note Added: 0011463
2022-12-12 11:35 (ALTech) Younkwang Jung Issue Monitored: (SW) Jacky Chiang
2022-12-12 11:47 (ALTech) Younkwang Jung Note Added: 0011465
2022-12-12 15:25 (SW) Kerwin Chen Assigned To (SW) Kerwin Chen => (SW) Bcan Yeh
2022-12-12 15:26 (SW) Kerwin Chen Note Added: 0011467
2022-12-13 12:17 (ALTech) Younkwang Jung Note Added: 0011472
2022-12-14 10:43 (SW) Bcan Yeh Note Added: 0011477
2022-12-14 10:49 (SW) Bcan Yeh Note Edited: 0011477
2022-12-14 15:49 (ALTech) Younkwang Jung Note Added: 0011486
2022-12-15 17:03 (SW) Bcan Yeh Note Added: 0011496
2022-12-16 13:19 (ALTech) Younkwang Jung Note Added: 0011499
2022-12-16 16:16 (SW) Bcan Yeh Note Added: 0011501
2022-12-16 18:01 (ALTech) Younkwang Jung Note Added: 0011502
2022-12-23 14:13 (SW) Bcan Yeh Note Added: 0011560
2022-12-23 14:13 (SW) Bcan Yeh File Added: traceKey1.diff
2022-12-23 14:13 (SW) Bcan Yeh File Added: traceKey2.diff
2022-12-27 15:09 (ALTech) Younkwang Jung Note Added: 0011585
2022-12-28 09:22 (ALTech) Younkwang Jung Note Added: 0011592
2022-12-28 10:19 (SW) Bcan Yeh Note Added: 0011594
2023-01-04 15:25 (ALTech) Younkwang Jung Note Added: 0011648
2023-01-04 18:22 (SW) Bcan Yeh Note Added: 0011658
2023-01-05 08:15 (ALTech) Younkwang Jung Note Added: 0011662
2023-01-05 11:08 (SW) Bcan Yeh Note Added: 0011671
2023-01-05 11:08 (SW) Bcan Yeh File Added: 1672887915846.jpg
2023-01-05 11:08 (SW) Bcan Yeh File Added: 1672887961674.jpg
2023-01-27 14:10 (ALTech) Younkwang Jung Note Added: 0011859
2023-01-30 09:26 (SW) Bcan Yeh Note Added: 0011866
2024-05-27 18:15 (ALTech) JunGyu Kim Note Added: 0015899
2024-05-27 18:15 (ALTech) JunGyu Kim File Added: BC_F4_D4_F7_FC_A5_20240518235003.zip
2024-05-30 12:32 (ALTech) Younkwang Jung Note Added: 0015915
2024-05-30 18:16 (SW) Bcan Yeh Note Added: 0015927
2024-06-04 11:57 (ALTech) Younkwang Jung Note Added: 0015945
2024-06-07 10:22 (SW) Bcan Yeh Note Added: 0015966
2024-06-07 10:23 (SW) Bcan Yeh Note Edited: 0015966
2024-06-07 14:34 (ALTech) Younkwang Jung Issue Monitored: (ALTech) Jong-Hwa JUNG
2024-06-07 14:36 (ALTech) Younkwang Jung Note Added: 0015968
2024-06-07 14:36 (ALTech) Younkwang Jung Note Edited: 0015968 View Revisions
2024-06-13 13:59 (SW) Bcan Yeh Note Added: 0016006
2024-06-13 13:59 (SW) Bcan Yeh File Added: traceKey3.diff
2024-06-14 18:56 (ALTech) JunGyu Kim Note Added: 0016045
2024-06-14 18:56 (ALTech) JunGyu Kim File Added: 4C_D5_77_FE_B9_BF_20240607185142.zip
2024-06-14 18:56 (ALTech) JunGyu Kim File Added: 28_CD_C4_FC_21_E1_20240607161343.zip
2024-06-14 18:56 (ALTech) JunGyu Kim File Added: D4_1B_81_FE_E8_91_20240607102356.zip
2024-06-17 11:12 (SW) Bcan Yeh Note Added: 0016050
2024-07-23 16:47 (ALTech) Younkwang Jung Note Added: 0016325
2024-07-23 16:49 (ALTech) Younkwang Jung Priority urgent => normal
2024-07-23 16:49 (ALTech) Younkwang Jung Due Date => 2024-07-26 17:48
2024-07-23 16:49 (ALTech) Younkwang Jung Issue Monitored: (ALTech) Wooshin Kang
2024-07-25 09:32 (ALTech) Younkwang Jung Issue Monitored: (SW) Kinbay Wu
2024-07-25 09:34 (ALTech) Younkwang Jung Note Added: 0016331
2024-07-26 10:40 (SW) Bcan Yeh Note Added: 0016338
2024-07-29 17:33 (SW) Bcan Yeh Note Added: 0016352
2024-07-29 17:33 (SW) Bcan Yeh File Added: 0001-Add-debug-messages-for-losing-OK-key-1-2.patch
2024-07-29 17:33 (SW) Bcan Yeh File Added: 0001-Add-debug-messages-for-losing-OK-key-2-2.patch
2024-07-30 08:35 (ALTech) Wooshin Kang Note Added: 0016353
2024-08-07 13:49 (ALTech) Younkwang Jung Note Added: 0016406
2024-08-07 17:15 (SW) Bcan Yeh Note Added: 0016410
2024-08-08 14:46 (ALTech) Younkwang Jung Due Date 2024-07-26 17:48 => 2024-07-31 17:48
2024-08-08 14:46 (ALTech) Younkwang Jung Due Date 2024-07-31 17:48 => 2024-08-14 17:48
2024-08-20 08:06 (ALTech) Younkwang Jung Note Added: 0016482
2024-08-22 08:46 (SW) Bcan Yeh Note Added: 0016528
2024-08-22 09:22 (ALTech) Younkwang Jung Note Added: 0016530
2024-08-23 11:34 (SW) Bcan Yeh Note Added: 0016557
2024-08-23 11:34 (SW) Bcan Yeh File Added: 0001-Add-debug-message-for-missing-OK-key-1-3.patch
2024-08-23 11:34 (SW) Bcan Yeh File Added: 0001-Add-debug-message-for-missing-OK-key-2-3.patch
2024-08-23 11:34 (SW) Bcan Yeh File Added: 0001-Add-debug-message-for-missing-OK-key-3-3.patch
2024-08-23 15:46 (SW) Bcan Yeh Note Added: 0016559
2024-08-23 15:46 (SW) Bcan Yeh File Added: update_0001-Add-debug-message-for-missing-OK-key-1-3.patch
2024-08-23 15:46 (SW) Bcan Yeh File Added: update_0001-Add-debug-message-for-missing-OK-key-2-3.patch
2024-08-23 15:46 (SW) Bcan Yeh File Added: update_0001-Add-debug-message-for-missing-OK-key-3-3.patch
2024-08-26 08:00 (ALTech) Younkwang Jung Note Added: 0016560
2024-08-26 08:00 (ALTech) Younkwang Jung Due Date 2024-08-14 17:48 => 2024-08-30 17:48
2024-08-28 08:51 (ALTech) Younkwang Jung Note Added: 0016588
2024-08-28 08:51 (ALTech) Younkwang Jung File Added: BFX-AT100_20240827-095153.zip
2024-08-28 08:52 (ALTech) Younkwang Jung Due Date 2024-08-30 17:48 => 2024-09-04 17:48
2024-09-02 10:42 (SW) Bcan Yeh Note Added: 0016621
2024-09-09 11:03 (ALTech) Younkwang Jung Note Added: 0016686
2024-09-09 11:03 (ALTech) Younkwang Jung File Added: logcat.log.0048.zip
2024-09-09 11:03 (ALTech) Younkwang Jung File Added: logcat.log.0062.zip
2024-09-09 11:03 (ALTech) Younkwang Jung File Added: logcat.log.0329.zip
2024-09-09 11:03 (ALTech) Younkwang Jung File Added: MonkeyTest_for_RCU.zip
2024-09-12 21:19 (SW) Bcan Yeh Note Added: 0016705
2024-09-13 08:07 (ALTech) Younkwang Jung Note Added: 0016706
2024-09-13 08:07 (ALTech) Younkwang Jung File Added: ME0035_20240902_b4_b5_b6_ff_cf_14 (1).zip
2024-09-13 15:24 (SW) Bcan Yeh Note Added: 0016723
2024-09-13 15:25 (SW) Bcan Yeh Note Added: 0016724
2024-09-13 15:25 (SW) Bcan Yeh File Added: 0001-Add-debug-message-for-missing-OK-key-1-3_20240913.patch
2024-09-13 15:25 (SW) Bcan Yeh File Added: 0001-Add-debug-message-for-missing-OK-key-2-3_20240913.patch
2024-09-13 15:25 (SW) Bcan Yeh File Added: 0001-Add-debug-message-for-missing-OK-key-3-3_20240913.patch
2024-09-17 16:27 (ALTech) Younkwang Jung Note Added: 0016725
2024-09-17 16:27 (ALTech) Younkwang Jung File Added: BFX-AT100_20240917-171004 (2).zip
2024-09-18 09:32 (SW) Bcan Yeh Note Added: 0016726
2024-09-19 09:13 (ALTech) Younkwang Jung Note Added: 0016727
2024-10-24 12:18 (ALTech) JunGyu Kim Note Added: 0016889
2024-10-24 13:08 (ALTech) JunGyu Kim Note Edited: 0016889
2024-10-24 14:44 (SW) Kinbay Wu Note Added: 0016890
2025-02-10 10:41 (ALTech) JunGyu Kim Note Added: 0017308
2025-02-10 10:41 (ALTech) JunGyu Kim File Added: A8_3B_76_FD_9F_2F_20250208210157.zip
2025-02-12 16:00 (SW) Bcan Yeh Note Added: 0017319
2025-02-12 16:01 (SW) Bcan Yeh Assigned To (SW) Bcan Yeh => (SW) Willin Deng
2025-02-12 18:41 (ALTech) JunGyu Kim Note Added: 0017321
2025-02-14 16:22 (ALTech) JunGyu Kim Note Added: 0017333
2025-03-10 13:18 (ALTech) JunGyu Kim Note Added: 0017369
2025-03-10 13:51 (ALTech) SY Yoon Issue Monitored: (PM) Sheila Tu
2025-03-10 13:52 (ALTech) SY Yoon Issue Monitored: (SW) Willin Deng
2025-03-10 13:54 (ALTech) SY Yoon Note Added: 0017370
2025-03-10 14:32 (PM) Sheila Tu Note Added: 0017371
2025-03-10 16:41 (ALTech) JunGyu Kim Note Added: 0017372
2025-03-10 17:07 (PM) Sheila Tu Note Added: 0017373
2025-07-04 16:55 (PM) Sheila Tu Status assigned => closed
2025-07-04 16:55 (PM) Sheila Tu Resolution open => fixed